couchbase 1.2.0.z.beta4 → 1.2.0.z.beta5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,12 @@
1
+ ## 1.2.0.z.beta5 / 2012-11-29
2
+
3
+ * Reduce probability name conflict: use "cb_" prefix
4
+ * Fix function prefixes
5
+ * Make error message about dependency more verbose
6
+ * Allow to setup default initial value for INCR/DECR
7
+ * Fix memory leaks: in async mode context wasn't freed
8
+ * RCBC-95 Use response body to clarify Couchbase::Error::HTTP
9
+
1
10
  ## 1.2.0.z.beta4 / 2012-11-21
2
11
 
3
12
  * Do not hide ValueFormat reason
@@ -17,22 +17,21 @@
17
17
 
18
18
  #include "couchbase_ext.h"
19
19
 
20
-
21
20
  /* TOUCH */
22
21
 
23
22
  static void
24
- cb_params_touch_alloc(struct params_st *params, lcb_size_t size)
23
+ cb_params_touch_alloc(struct cb_params_st *params, lcb_size_t size)
25
24
  {
26
25
  lcb_size_t ii;
27
26
 
28
27
  params->cmd.touch.num = size;
29
28
  params->cmd.touch.items = xcalloc(size, sizeof(lcb_touch_cmd_t));
30
29
  if (params->cmd.touch.items == NULL) {
31
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
30
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
32
31
  }
33
32
  params->cmd.touch.ptr = xcalloc(size, sizeof(lcb_touch_cmd_t *));
34
33
  if (params->cmd.touch.ptr == NULL) {
35
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
34
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
36
35
  }
37
36
  for (ii = 0; ii < size; ++ii) {
38
37
  params->cmd.touch.ptr[ii] = params->cmd.touch.items + ii;
@@ -40,9 +39,9 @@ cb_params_touch_alloc(struct params_st *params, lcb_size_t size)
40
39
  }
41
40
 
42
41
  static void
43
- cb_params_touch_init_item(struct params_st *params, lcb_size_t idx, VALUE key_obj, lcb_time_t exptime)
42
+ cb_params_touch_init_item(struct cb_params_st *params, lcb_size_t idx, VALUE key_obj, lcb_time_t exptime)
44
43
  {
45
- key_obj = unify_key(params->bucket, key_obj, 1);
44
+ key_obj = cb_unify_key(params->bucket, key_obj, 1);
46
45
  params->cmd.touch.items[idx].v.v0.key = RSTRING_PTR(key_obj);
47
46
  params->cmd.touch.items[idx].v.v0.nkey = RSTRING_LEN(key_obj);
48
47
  params->cmd.touch.items[idx].v.v0.exptime = exptime;
@@ -52,30 +51,30 @@ cb_params_touch_init_item(struct params_st *params, lcb_size_t idx, VALUE key_ob
52
51
  static int
53
52
  cb_params_touch_extract_keys_i(VALUE key, VALUE value, VALUE arg)
54
53
  {
55
- struct params_st *params = (struct params_st *)arg;
54
+ struct cb_params_st *params = (struct cb_params_st *)arg;
56
55
  cb_params_touch_init_item(params, params->idx++, key, NUM2ULONG(value));
57
56
  return ST_CONTINUE;
58
57
  }
59
58
 
60
59
  static void
61
- cb_params_touch_parse_options(struct params_st *params, VALUE options)
60
+ cb_params_touch_parse_options(struct cb_params_st *params, VALUE options)
62
61
  {
63
62
  VALUE tmp;
64
63
 
65
64
  if (NIL_P(options)) {
66
65
  return;
67
66
  }
68
- tmp = rb_hash_aref(options, sym_ttl);
67
+ tmp = rb_hash_aref(options, cb_sym_ttl);
69
68
  if (tmp != Qnil) {
70
69
  params->cmd.touch.ttl = NUM2ULONG(tmp);
71
70
  }
72
- if (RTEST(rb_funcall(options, id_has_key_p, 1, sym_quiet))) {
73
- params->cmd.touch.quiet = RTEST(rb_hash_aref(options, sym_quiet));
71
+ if (RTEST(rb_funcall(options, cb_id_has_key_p, 1, cb_sym_quiet))) {
72
+ params->cmd.touch.quiet = RTEST(rb_hash_aref(options, cb_sym_quiet));
74
73
  }
75
74
  }
76
75
 
77
76
  static void
78
- cb_params_touch_parse_arguments(struct params_st *params, int argc, VALUE argv)
77
+ cb_params_touch_parse_arguments(struct cb_params_st *params, int argc, VALUE argv)
79
78
  {
80
79
  lcb_size_t ii;
81
80
 
@@ -117,18 +116,18 @@ cb_params_touch_parse_arguments(struct params_st *params, int argc, VALUE argv)
117
116
  /* REMOVE */
118
117
 
119
118
  static void
120
- cb_params_remove_alloc(struct params_st *params, lcb_size_t size)
119
+ cb_params_remove_alloc(struct cb_params_st *params, lcb_size_t size)
121
120
  {
122
121
  lcb_size_t ii;
123
122
 
124
123
  params->cmd.remove.num = size;
125
124
  params->cmd.remove.items = xcalloc(size, sizeof(lcb_remove_cmd_t));
126
125
  if (params->cmd.remove.items == NULL) {
127
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
126
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
128
127
  }
129
128
  params->cmd.remove.ptr = xcalloc(size, sizeof(lcb_remove_cmd_t *));
130
129
  if (params->cmd.remove.ptr == NULL) {
131
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
130
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
132
131
  }
133
132
  for (ii = 0; ii < size; ++ii) {
134
133
  params->cmd.remove.ptr[ii] = params->cmd.remove.items + ii;
@@ -136,9 +135,9 @@ cb_params_remove_alloc(struct params_st *params, lcb_size_t size)
136
135
  }
137
136
 
138
137
  static void
139
- cb_params_remove_init_item(struct params_st *params, lcb_size_t idx, VALUE key_obj, lcb_cas_t cas)
138
+ cb_params_remove_init_item(struct cb_params_st *params, lcb_size_t idx, VALUE key_obj, lcb_cas_t cas)
140
139
  {
141
- key_obj = unify_key(params->bucket, key_obj, 1);
140
+ key_obj = cb_unify_key(params->bucket, key_obj, 1);
142
141
  params->cmd.remove.items[idx].v.v0.key = RSTRING_PTR(key_obj);
143
142
  params->cmd.remove.items[idx].v.v0.nkey = RSTRING_LEN(key_obj);
144
143
  params->cmd.remove.items[idx].v.v0.cas = cas;
@@ -148,30 +147,30 @@ cb_params_remove_init_item(struct params_st *params, lcb_size_t idx, VALUE key_o
148
147
  static int
149
148
  cb_params_remove_extract_keys_i(VALUE key, VALUE value, VALUE arg)
150
149
  {
151
- struct params_st *params = (struct params_st *)arg;
150
+ struct cb_params_st *params = (struct cb_params_st *)arg;
152
151
  cb_params_remove_init_item(params, params->idx++, key, NUM2ULL(value));
153
152
  return ST_CONTINUE;
154
153
  }
155
154
 
156
155
  static void
157
- cb_params_remove_parse_options(struct params_st *params, VALUE options)
156
+ cb_params_remove_parse_options(struct cb_params_st *params, VALUE options)
158
157
  {
159
158
  VALUE tmp;
160
159
 
161
160
  if (NIL_P(options)) {
162
161
  return;
163
162
  }
164
- if (RTEST(rb_funcall(options, id_has_key_p, 1, sym_quiet))) {
165
- params->cmd.remove.quiet = RTEST(rb_hash_aref(options, sym_quiet));
163
+ if (RTEST(rb_funcall(options, cb_id_has_key_p, 1, cb_sym_quiet))) {
164
+ params->cmd.remove.quiet = RTEST(rb_hash_aref(options, cb_sym_quiet));
166
165
  }
167
- tmp = rb_hash_aref(options, sym_cas);
166
+ tmp = rb_hash_aref(options, cb_sym_cas);
168
167
  if (tmp != Qnil) {
169
168
  params->cmd.remove.cas = NUM2ULL(tmp);
170
169
  }
171
170
  }
172
171
 
173
172
  static void
174
- cb_params_remove_parse_arguments(struct params_st *params, int argc, VALUE argv)
173
+ cb_params_remove_parse_arguments(struct cb_params_st *params, int argc, VALUE argv)
175
174
  {
176
175
  lcb_size_t ii;
177
176
 
@@ -212,18 +211,18 @@ cb_params_remove_parse_arguments(struct params_st *params, int argc, VALUE argv)
212
211
 
213
212
  /* STORE */
214
213
  static void
215
- cb_params_store_alloc(struct params_st *params, lcb_size_t size)
214
+ cb_params_store_alloc(struct cb_params_st *params, lcb_size_t size)
216
215
  {
217
216
  lcb_size_t ii;
218
217
 
219
218
  params->cmd.store.num = size;
220
219
  params->cmd.store.items = xcalloc(size, sizeof(lcb_store_cmd_t));
221
220
  if (params->cmd.store.items == NULL) {
222
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
221
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
223
222
  }
224
223
  params->cmd.store.ptr = xcalloc(size, sizeof(lcb_store_cmd_t *));
225
224
  if (params->cmd.store.ptr == NULL) {
226
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
225
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
227
226
  }
228
227
  for (ii = 0; ii < size; ++ii) {
229
228
  params->cmd.store.ptr[ii] = params->cmd.store.items + ii;
@@ -231,24 +230,24 @@ cb_params_store_alloc(struct params_st *params, lcb_size_t size)
231
230
  }
232
231
 
233
232
  static void
234
- cb_params_store_init_item(struct params_st *params, lcb_size_t idx,
233
+ cb_params_store_init_item(struct cb_params_st *params, lcb_size_t idx,
235
234
  VALUE key_obj, VALUE value_obj, lcb_uint32_t flags, lcb_cas_t cas,
236
235
  lcb_time_t exptime)
237
236
  {
238
- key_obj = unify_key(params->bucket, key_obj, 1);
239
- value_obj = encode_value(value_obj, params->cmd.store.flags);
237
+ key_obj = cb_unify_key(params->bucket, key_obj, 1);
238
+ value_obj = cb_encode_value(value_obj, params->cmd.store.flags);
240
239
  if (rb_obj_is_kind_of(value_obj, rb_eStandardError)) {
241
- VALUE exc_str = rb_funcall(value_obj, id_to_s, 0);
242
- VALUE msg = rb_funcall(rb_mKernel, id_sprintf, 3,
240
+ VALUE exc_str = rb_funcall(value_obj, cb_id_to_s, 0);
241
+ VALUE msg = rb_funcall(rb_mKernel, cb_id_sprintf, 3,
243
242
  rb_str_new2("unable to convert value for key '%s': %s"), key_obj, exc_str);
244
- VALUE exc = rb_exc_new3(eValueFormatError, msg);
245
- rb_ivar_set(exc, id_iv_inner_exception, value_obj);
243
+ VALUE exc = rb_exc_new3(cb_eValueFormatError, msg);
244
+ rb_ivar_set(exc, cb_id_iv_inner_exception, value_obj);
246
245
  rb_exc_raise(exc);
247
246
  }
248
247
  /* the value must be string after conversion */
249
248
  if (TYPE(value_obj) != T_STRING) {
250
249
  VALUE val = rb_any_to_s(value_obj);
251
- rb_raise(eValueFormatError, "unable to convert value for key '%s' to string: %s", RSTRING_PTR(key_obj), RSTRING_PTR(val));
250
+ rb_raise(cb_eValueFormatError, "unable to convert value for key '%s' to string: %s", RSTRING_PTR(key_obj), RSTRING_PTR(val));
252
251
  }
253
252
  params->cmd.store.items[idx].v.v0.datatype = params->cmd.store.datatype;
254
253
  params->cmd.store.items[idx].v.v0.operation = params->cmd.store.operation;
@@ -265,50 +264,50 @@ cb_params_store_init_item(struct params_st *params, lcb_size_t idx,
265
264
  static int
266
265
  cb_params_store_extract_keys_i(VALUE key, VALUE value, VALUE arg)
267
266
  {
268
- struct params_st *params = (struct params_st *)arg;
267
+ struct cb_params_st *params = (struct cb_params_st *)arg;
269
268
  cb_params_store_init_item(params, params->idx++, key, value,
270
269
  params->cmd.store.flags, 0, params->cmd.store.ttl);
271
270
  return ST_CONTINUE;
272
271
  }
273
272
 
274
273
  static void
275
- cb_params_store_parse_options(struct params_st *params, VALUE options)
274
+ cb_params_store_parse_options(struct cb_params_st *params, VALUE options)
276
275
  {
277
276
  VALUE tmp;
278
277
 
279
278
  if (NIL_P(options)) {
280
279
  return;
281
280
  }
282
- tmp = rb_hash_aref(options, sym_flags);
281
+ tmp = rb_hash_aref(options, cb_sym_flags);
283
282
  if (tmp != Qnil) {
284
283
  params->cmd.store.flags = (lcb_uint32_t)NUM2ULONG(tmp);
285
284
  }
286
- tmp = rb_hash_aref(options, sym_format);
285
+ tmp = rb_hash_aref(options, cb_sym_format);
287
286
  if (tmp != Qnil) { /* rewrite format bits */
288
- params->cmd.store.flags = flags_set_format(params->cmd.store.flags, tmp);
287
+ params->cmd.store.flags = cb_flags_set_format(params->cmd.store.flags, tmp);
289
288
  }
290
- tmp = rb_hash_aref(options, sym_ttl);
289
+ tmp = rb_hash_aref(options, cb_sym_ttl);
291
290
  if (tmp != Qnil) {
292
291
  params->cmd.store.ttl = NUM2ULONG(tmp);
293
292
  }
294
- tmp = rb_hash_aref(options, sym_cas);
293
+ tmp = rb_hash_aref(options, cb_sym_cas);
295
294
  if (tmp != Qnil) {
296
295
  params->cmd.store.cas = NUM2ULL(tmp);
297
296
  }
298
- tmp = rb_hash_aref(options, sym_observe);
297
+ tmp = rb_hash_aref(options, cb_sym_observe);
299
298
  if (tmp != Qnil) {
300
299
  Check_Type(tmp, T_HASH);
301
- rb_funcall(params->bucket->self, id_verify_observe_options, 1, tmp);
300
+ rb_funcall(params->bucket->self, cb_id_verify_observe_options, 1, tmp);
302
301
  params->cmd.store.observe = tmp;
303
302
  }
304
- if (flags_get_format(params->cmd.store.flags) == sym_document) {
303
+ if (cb_flags_get_format(params->cmd.store.flags) == cb_sym_document) {
305
304
  /* just amend datatype for now */
306
305
  params->cmd.store.datatype = 0x01;
307
306
  }
308
307
  }
309
308
 
310
309
  static void
311
- cb_params_store_parse_arguments(struct params_st *params, int argc, VALUE argv)
310
+ cb_params_store_parse_arguments(struct cb_params_st *params, int argc, VALUE argv)
312
311
  {
313
312
  VALUE keys;
314
313
 
@@ -344,7 +343,7 @@ cb_params_store_parse_arguments(struct params_st *params, int argc, VALUE argv)
344
343
 
345
344
  /* GET */
346
345
  static void
347
- cb_params_get_alloc(struct params_st *params, lcb_size_t size)
346
+ cb_params_get_alloc(struct cb_params_st *params, lcb_size_t size)
348
347
  {
349
348
  lcb_size_t ii;
350
349
 
@@ -352,11 +351,11 @@ cb_params_get_alloc(struct params_st *params, lcb_size_t size)
352
351
  if (params->cmd.get.replica) {
353
352
  params->cmd.get.items = xcalloc(size, sizeof(lcb_get_replica_cmd_t));
354
353
  if (params->cmd.get.items_gr == NULL) {
355
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
354
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
356
355
  }
357
356
  params->cmd.get.ptr = xcalloc(size, sizeof(lcb_get_replica_cmd_t *));
358
357
  if (params->cmd.get.ptr_gr == NULL) {
359
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
358
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
360
359
  }
361
360
  for (ii = 0; ii < size; ++ii) {
362
361
  params->cmd.get.ptr_gr[ii] = params->cmd.get.items_gr + ii;
@@ -364,11 +363,11 @@ cb_params_get_alloc(struct params_st *params, lcb_size_t size)
364
363
  } else {
365
364
  params->cmd.get.items = xcalloc(size, sizeof(lcb_get_cmd_t));
366
365
  if (params->cmd.get.items == NULL) {
367
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
366
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
368
367
  }
369
368
  params->cmd.get.ptr = xcalloc(size, sizeof(lcb_get_cmd_t *));
370
369
  if (params->cmd.get.ptr == NULL) {
371
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
370
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
372
371
  }
373
372
  for (ii = 0; ii < size; ++ii) {
374
373
  params->cmd.get.ptr[ii] = params->cmd.get.items + ii;
@@ -377,10 +376,10 @@ cb_params_get_alloc(struct params_st *params, lcb_size_t size)
377
376
  }
378
377
 
379
378
  static void
380
- cb_params_get_init_item(struct params_st *params, lcb_size_t idx,
379
+ cb_params_get_init_item(struct cb_params_st *params, lcb_size_t idx,
381
380
  VALUE key_obj, lcb_time_t exptime)
382
381
  {
383
- key_obj = unify_key(params->bucket, key_obj, 1);
382
+ key_obj = cb_unify_key(params->bucket, key_obj, 1);
384
383
  if (params->cmd.get.replica) {
385
384
  params->cmd.get.items_gr[idx].v.v0.key = RSTRING_PTR(key_obj);
386
385
  params->cmd.get.items_gr[idx].v.v0.nkey = RSTRING_LEN(key_obj);
@@ -397,37 +396,37 @@ cb_params_get_init_item(struct params_st *params, lcb_size_t idx,
397
396
  static int
398
397
  cb_params_get_extract_keys_i(VALUE key, VALUE value, VALUE arg)
399
398
  {
400
- struct params_st *params = (struct params_st *)arg;
399
+ struct cb_params_st *params = (struct cb_params_st *)arg;
401
400
  rb_ary_push(params->cmd.get.keys_ary, key);
402
401
  cb_params_get_init_item(params, params->idx++, key, NUM2ULONG(value));
403
402
  return ST_CONTINUE;
404
403
  }
405
404
 
406
405
  static void
407
- cb_params_get_parse_options(struct params_st *params, VALUE options)
406
+ cb_params_get_parse_options(struct cb_params_st *params, VALUE options)
408
407
  {
409
408
  VALUE tmp;
410
409
 
411
410
  if (NIL_P(options)) {
412
411
  return;
413
412
  }
414
- params->cmd.get.replica = RTEST(rb_hash_aref(options, sym_replica));
415
- params->cmd.get.extended = RTEST(rb_hash_aref(options, sym_extended));
416
- params->cmd.get.assemble_hash = RTEST(rb_hash_aref(options, sym_assemble_hash));
417
- if (RTEST(rb_funcall(options, id_has_key_p, 1, sym_quiet))) {
418
- params->cmd.get.quiet = RTEST(rb_hash_aref(options, sym_quiet));
413
+ params->cmd.get.replica = RTEST(rb_hash_aref(options, cb_sym_replica));
414
+ params->cmd.get.extended = RTEST(rb_hash_aref(options, cb_sym_extended));
415
+ params->cmd.get.assemble_hash = RTEST(rb_hash_aref(options, cb_sym_assemble_hash));
416
+ if (RTEST(rb_funcall(options, cb_id_has_key_p, 1, cb_sym_quiet))) {
417
+ params->cmd.get.quiet = RTEST(rb_hash_aref(options, cb_sym_quiet));
419
418
  }
420
- tmp = rb_hash_aref(options, sym_format);
419
+ tmp = rb_hash_aref(options, cb_sym_format);
421
420
  if (tmp != Qnil) {
422
421
  Check_Type(tmp, T_SYMBOL);
423
422
  params->cmd.get.forced_format = tmp;
424
423
  }
425
- tmp = rb_hash_aref(options, sym_ttl);
424
+ tmp = rb_hash_aref(options, cb_sym_ttl);
426
425
  if (tmp != Qnil) {
427
426
  params->cmd.get.ttl = NUM2ULONG(tmp);
428
427
  }
429
428
  /* boolean or number of seconds to lock */
430
- tmp = rb_hash_aref(options, sym_lock);
429
+ tmp = rb_hash_aref(options, cb_sym_lock);
431
430
  if (tmp != Qnil) {
432
431
  params->cmd.get.lock = RTEST(tmp);
433
432
  if (TYPE(tmp) == T_FIXNUM) {
@@ -437,7 +436,7 @@ cb_params_get_parse_options(struct params_st *params, VALUE options)
437
436
  }
438
437
 
439
438
  static void
440
- cb_params_get_parse_arguments(struct params_st *params, int argc, VALUE argv)
439
+ cb_params_get_parse_arguments(struct cb_params_st *params, int argc, VALUE argv)
441
440
  {
442
441
  lcb_size_t ii;
443
442
 
@@ -484,18 +483,18 @@ cb_params_get_parse_arguments(struct params_st *params, int argc, VALUE argv)
484
483
 
485
484
  /* ARITH */
486
485
  static void
487
- cb_params_arith_alloc(struct params_st *params, lcb_size_t size)
486
+ cb_params_arith_alloc(struct cb_params_st *params, lcb_size_t size)
488
487
  {
489
488
  lcb_size_t ii;
490
489
 
491
490
  params->cmd.arith.num = size;
492
491
  params->cmd.arith.items = xcalloc(size, sizeof(lcb_arithmetic_cmd_t));
493
492
  if (params->cmd.arith.items == NULL) {
494
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
493
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
495
494
  }
496
495
  params->cmd.arith.ptr = xcalloc(size, sizeof(lcb_arithmetic_cmd_t *));
497
496
  if (params->cmd.arith.ptr == NULL) {
498
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
497
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
499
498
  }
500
499
  for (ii = 0; ii < size; ++ii) {
501
500
  params->cmd.arith.ptr[ii] = params->cmd.arith.items + ii;
@@ -503,10 +502,10 @@ cb_params_arith_alloc(struct params_st *params, lcb_size_t size)
503
502
  }
504
503
 
505
504
  static void
506
- cb_params_arith_init_item(struct params_st *params, lcb_size_t idx,
505
+ cb_params_arith_init_item(struct cb_params_st *params, lcb_size_t idx,
507
506
  VALUE key_obj, lcb_int64_t delta)
508
507
  {
509
- key_obj = unify_key(params->bucket, key_obj, 1);
508
+ key_obj = cb_unify_key(params->bucket, key_obj, 1);
510
509
  params->cmd.arith.items[idx].v.v0.key = RSTRING_PTR(key_obj);
511
510
  params->cmd.arith.items[idx].v.v0.nkey = RSTRING_LEN(key_obj);
512
511
  params->cmd.arith.items[idx].v.v0.delta = delta * params->cmd.arith.sign;
@@ -519,46 +518,49 @@ cb_params_arith_init_item(struct params_st *params, lcb_size_t idx,
519
518
  static int
520
519
  cb_params_arith_extract_keys_i(VALUE key, VALUE value, VALUE arg)
521
520
  {
522
- struct params_st *params = (struct params_st *)arg;
521
+ struct cb_params_st *params = (struct cb_params_st *)arg;
523
522
  cb_params_arith_init_item(params, params->idx++, key, NUM2ULONG(value) & INT64_MAX);
524
523
  return ST_CONTINUE;
525
524
  }
526
525
 
527
526
  static void
528
- cb_params_arith_parse_options(struct params_st *params, VALUE options)
527
+ cb_params_arith_parse_options(struct cb_params_st *params, VALUE options)
529
528
  {
530
529
  VALUE tmp;
531
530
 
532
531
  if (NIL_P(options)) {
533
532
  return;
534
533
  }
535
- params->cmd.arith.create = RTEST(rb_hash_aref(options, sym_create));
536
- params->cmd.arith.extended = RTEST(rb_hash_aref(options, sym_extended));
537
- tmp = rb_hash_aref(options, sym_ttl);
534
+ tmp = rb_hash_aref(options, cb_sym_create);
535
+ if (tmp != Qnil) {
536
+ params->cmd.arith.create = RTEST(tmp);
537
+ }
538
+ params->cmd.arith.extended = RTEST(rb_hash_aref(options, cb_sym_extended));
539
+ tmp = rb_hash_aref(options, cb_sym_ttl);
538
540
  if (tmp != Qnil) {
539
541
  params->cmd.arith.ttl = NUM2ULONG(tmp);
540
542
  }
541
- tmp = rb_hash_aref(options, sym_initial);
543
+ tmp = rb_hash_aref(options, cb_sym_initial);
542
544
  if (tmp != Qnil) {
543
545
  params->cmd.arith.initial = NUM2ULL(tmp);
544
546
  params->cmd.arith.create = 1;
545
547
  }
546
- tmp = rb_hash_aref(options, sym_delta);
548
+ tmp = rb_hash_aref(options, cb_sym_delta);
547
549
  if (tmp != Qnil) {
548
550
  params->cmd.arith.delta = NUM2ULL(tmp) & INT64_MAX;
549
551
  }
550
- tmp = rb_hash_aref(options, sym_format);
552
+ tmp = rb_hash_aref(options, cb_sym_format);
551
553
  if (tmp != Qnil) { /* rewrite format bits */
552
554
  params->cmd.arith.format = tmp;
553
555
  }
554
- if (params->cmd.arith.format == sym_document) {
556
+ if (params->cmd.arith.format == cb_sym_document) {
555
557
  /* just amend datatype for now */
556
558
  params->cmd.arith.datatype = 0x01;
557
559
  }
558
560
  }
559
561
 
560
562
  static void
561
- cb_params_arith_parse_arguments(struct params_st *params, int argc, VALUE argv)
563
+ cb_params_arith_parse_arguments(struct cb_params_st *params, int argc, VALUE argv)
562
564
  {
563
565
  lcb_size_t ii;
564
566
 
@@ -598,18 +600,18 @@ cb_params_arith_parse_arguments(struct params_st *params, int argc, VALUE argv)
598
600
 
599
601
  /* STATS */
600
602
  static void
601
- cb_params_stats_alloc(struct params_st *params, lcb_size_t size)
603
+ cb_params_stats_alloc(struct cb_params_st *params, lcb_size_t size)
602
604
  {
603
605
  lcb_size_t ii;
604
606
 
605
607
  params->cmd.stats.num = size;
606
608
  params->cmd.stats.items = xcalloc(size, sizeof(lcb_server_stats_cmd_t));
607
609
  if (params->cmd.stats.items == NULL) {
608
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
610
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
609
611
  }
610
612
  params->cmd.stats.ptr = xcalloc(size, sizeof(lcb_server_stats_cmd_t *));
611
613
  if (params->cmd.stats.ptr == NULL) {
612
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
614
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
613
615
  }
614
616
  for (ii = 0; ii < size; ++ii) {
615
617
  params->cmd.stats.ptr[ii] = params->cmd.stats.items + ii;
@@ -617,17 +619,17 @@ cb_params_stats_alloc(struct params_st *params, lcb_size_t size)
617
619
  }
618
620
 
619
621
  static void
620
- cb_params_stats_init_item(struct params_st *params, lcb_size_t idx,
622
+ cb_params_stats_init_item(struct cb_params_st *params, lcb_size_t idx,
621
623
  VALUE key_obj)
622
624
  {
623
- key_obj = unify_key(params->bucket, key_obj, 1);
625
+ key_obj = cb_unify_key(params->bucket, key_obj, 1);
624
626
  params->cmd.stats.items[idx].v.v0.name = RSTRING_PTR(key_obj);
625
627
  params->cmd.stats.items[idx].v.v0.nname = RSTRING_LEN(key_obj);
626
628
  params->npayload += RSTRING_LEN(key_obj);
627
629
  }
628
630
 
629
631
  static void
630
- cb_params_stats_parse_arguments(struct params_st *params, int argc, VALUE argv)
632
+ cb_params_stats_parse_arguments(struct cb_params_st *params, int argc, VALUE argv)
631
633
  {
632
634
  lcb_size_t ii;
633
635
 
@@ -663,18 +665,18 @@ cb_params_stats_parse_arguments(struct params_st *params, int argc, VALUE argv)
663
665
  /* REMOVE */
664
666
 
665
667
  static void
666
- cb_params_observe_alloc(struct params_st *params, lcb_size_t size)
668
+ cb_params_observe_alloc(struct cb_params_st *params, lcb_size_t size)
667
669
  {
668
670
  lcb_size_t ii;
669
671
 
670
672
  params->cmd.observe.num = size;
671
673
  params->cmd.observe.items = xcalloc(size, sizeof(lcb_observe_cmd_t));
672
674
  if (params->cmd.observe.items == NULL) {
673
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
675
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
674
676
  }
675
677
  params->cmd.observe.ptr = xcalloc(size, sizeof(lcb_observe_cmd_t *));
676
678
  if (params->cmd.observe.ptr == NULL) {
677
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
679
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
678
680
  }
679
681
  for (ii = 0; ii < size; ++ii) {
680
682
  params->cmd.observe.ptr[ii] = params->cmd.observe.items + ii;
@@ -682,16 +684,16 @@ cb_params_observe_alloc(struct params_st *params, lcb_size_t size)
682
684
  }
683
685
 
684
686
  static void
685
- cb_params_observe_init_item(struct params_st *params, lcb_size_t idx, VALUE key_obj)
687
+ cb_params_observe_init_item(struct cb_params_st *params, lcb_size_t idx, VALUE key_obj)
686
688
  {
687
- key_obj = unify_key(params->bucket, key_obj, 1);
689
+ key_obj = cb_unify_key(params->bucket, key_obj, 1);
688
690
  params->cmd.observe.items[idx].v.v0.key = RSTRING_PTR(key_obj);
689
691
  params->cmd.observe.items[idx].v.v0.nkey = RSTRING_LEN(key_obj);
690
692
  params->npayload += RSTRING_LEN(key_obj);
691
693
  }
692
694
 
693
695
  static void
694
- cb_params_observe_parse_arguments(struct params_st *params, int argc, VALUE argv)
696
+ cb_params_observe_parse_arguments(struct cb_params_st *params, int argc, VALUE argv)
695
697
  {
696
698
  lcb_size_t ii;
697
699
 
@@ -726,18 +728,18 @@ cb_params_observe_parse_arguments(struct params_st *params, int argc, VALUE argv
726
728
 
727
729
  /* UNLOCK */
728
730
  static void
729
- cb_params_unlock_alloc(struct params_st *params, lcb_size_t size)
731
+ cb_params_unlock_alloc(struct cb_params_st *params, lcb_size_t size)
730
732
  {
731
733
  lcb_size_t ii;
732
734
 
733
735
  params->cmd.unlock.num = size;
734
736
  params->cmd.unlock.items = xcalloc(size, sizeof(lcb_unlock_cmd_t));
735
737
  if (params->cmd.unlock.items == NULL) {
736
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
738
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
737
739
  }
738
740
  params->cmd.unlock.ptr = xcalloc(size, sizeof(lcb_unlock_cmd_t *));
739
741
  if (params->cmd.unlock.ptr == NULL) {
740
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
742
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
741
743
  }
742
744
  for (ii = 0; ii < size; ++ii) {
743
745
  params->cmd.unlock.ptr[ii] = params->cmd.unlock.items + ii;
@@ -745,9 +747,9 @@ cb_params_unlock_alloc(struct params_st *params, lcb_size_t size)
745
747
  }
746
748
 
747
749
  static void
748
- cb_params_unlock_init_item(struct params_st *params, lcb_size_t idx, VALUE key_obj, lcb_cas_t cas)
750
+ cb_params_unlock_init_item(struct cb_params_st *params, lcb_size_t idx, VALUE key_obj, lcb_cas_t cas)
749
751
  {
750
- key_obj = unify_key(params->bucket, key_obj, 1);
752
+ key_obj = cb_unify_key(params->bucket, key_obj, 1);
751
753
  params->cmd.unlock.items[idx].v.v0.key = RSTRING_PTR(key_obj);
752
754
  params->cmd.unlock.items[idx].v.v0.nkey = RSTRING_LEN(key_obj);
753
755
  params->cmd.unlock.items[idx].v.v0.cas = cas;
@@ -757,30 +759,30 @@ cb_params_unlock_init_item(struct params_st *params, lcb_size_t idx, VALUE key_o
757
759
  static int
758
760
  cb_params_unlock_extract_keys_i(VALUE key, VALUE value, VALUE arg)
759
761
  {
760
- struct params_st *params = (struct params_st *)arg;
762
+ struct cb_params_st *params = (struct cb_params_st *)arg;
761
763
  cb_params_unlock_init_item(params, params->idx++, key, NUM2ULL(value));
762
764
  return ST_CONTINUE;
763
765
  }
764
766
 
765
767
  static void
766
- cb_params_unlock_parse_options(struct params_st *params, VALUE options)
768
+ cb_params_unlock_parse_options(struct cb_params_st *params, VALUE options)
767
769
  {
768
770
  VALUE tmp;
769
771
 
770
772
  if (NIL_P(options)) {
771
773
  return;
772
774
  }
773
- tmp = rb_hash_aref(options, sym_cas);
775
+ tmp = rb_hash_aref(options, cb_sym_cas);
774
776
  if (tmp != Qnil) {
775
777
  params->cmd.unlock.cas = NUM2ULL(tmp);
776
778
  }
777
- if (RTEST(rb_funcall(options, id_has_key_p, 1, sym_quiet))) {
778
- params->cmd.unlock.quiet = RTEST(rb_hash_aref(options, sym_quiet));
779
+ if (RTEST(rb_funcall(options, cb_id_has_key_p, 1, cb_sym_quiet))) {
780
+ params->cmd.unlock.quiet = RTEST(rb_hash_aref(options, cb_sym_quiet));
779
781
  }
780
782
  }
781
783
 
782
784
  static void
783
- cb_params_unlock_parse_arguments(struct params_st *params, int argc, VALUE argv)
785
+ cb_params_unlock_parse_arguments(struct cb_params_st *params, int argc, VALUE argv)
784
786
  {
785
787
  if (argc == 1) {
786
788
  VALUE keys = RARRAY_PTR(argv)[0];
@@ -803,16 +805,16 @@ cb_params_unlock_parse_arguments(struct params_st *params, int argc, VALUE argv)
803
805
 
804
806
  /* VERSION */
805
807
  static void
806
- cb_params_version_alloc(struct params_st *params)
808
+ cb_params_version_alloc(struct cb_params_st *params)
807
809
  {
808
810
  params->cmd.version.num = 1;
809
811
  params->cmd.version.items = xcalloc(1, sizeof(lcb_server_version_cmd_t));
810
812
  if (params->cmd.version.items == NULL) {
811
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
813
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
812
814
  }
813
815
  params->cmd.version.ptr = xcalloc(1, sizeof(lcb_server_version_cmd_t *));
814
816
  if (params->cmd.version.ptr == NULL) {
815
- rb_raise(eClientNoMemoryError, "failed to allocate memory for arguments");
817
+ rb_raise(cb_eClientNoMemoryError, "failed to allocate memory for arguments");
816
818
  }
817
819
  params->cmd.version.ptr[0] = params->cmd.version.items;
818
820
  }
@@ -820,40 +822,40 @@ cb_params_version_alloc(struct params_st *params)
820
822
 
821
823
  /* common stuff */
822
824
  void
823
- cb_params_destroy(struct params_st *params)
825
+ cb_params_destroy(struct cb_params_st *params)
824
826
  {
825
827
  #define _release_data_for(type) \
826
828
  xfree(params->cmd.type.items); \
827
829
  xfree(params->cmd.type.ptr);
828
830
 
829
831
  switch (params->type) {
830
- case cmd_get:
832
+ case cb_cmd_get:
831
833
  _release_data_for(get);
832
834
  xfree(params->cmd.get.items_gr);
833
835
  xfree(params->cmd.get.ptr_gr);
834
836
  break;
835
- case cmd_touch:
837
+ case cb_cmd_touch:
836
838
  _release_data_for(touch);
837
839
  break;
838
- case cmd_arith:
840
+ case cb_cmd_arith:
839
841
  _release_data_for(arith);
840
842
  break;
841
- case cmd_remove:
843
+ case cb_cmd_remove:
842
844
  _release_data_for(remove);
843
845
  break;
844
- case cmd_store:
846
+ case cb_cmd_store:
845
847
  _release_data_for(store);
846
848
  break;
847
- case cmd_stats:
849
+ case cb_cmd_stats:
848
850
  _release_data_for(stats);
849
851
  break;
850
- case cmd_version:
852
+ case cb_cmd_version:
851
853
  _release_data_for(version);
852
854
  break;
853
- case cmd_observe:
855
+ case cb_cmd_observe:
854
856
  _release_data_for(observe);
855
857
  break;
856
- case cmd_unlock:
858
+ case cb_cmd_unlock:
857
859
  _release_data_for(unlock);
858
860
  break;
859
861
  }
@@ -862,7 +864,7 @@ cb_params_destroy(struct params_st *params)
862
864
 
863
865
  struct build_params_st
864
866
  {
865
- struct params_st *params;
867
+ struct cb_params_st *params;
866
868
  int argc;
867
869
  VALUE argv;
868
870
  };
@@ -873,7 +875,7 @@ do_params_build(VALUE ptr)
873
875
  VALUE opts;
874
876
  /* unpack arguments */
875
877
  struct build_params_st *p = (struct build_params_st *)ptr;
876
- struct params_st *params = p->params;
878
+ struct cb_params_st *params = p->params;
877
879
  int argc = p->argc;
878
880
  VALUE argv = p->argv;
879
881
 
@@ -885,15 +887,15 @@ do_params_build(VALUE ptr)
885
887
  opts = Qnil;
886
888
  }
887
889
 
888
- params->npayload = PACKET_HEADER_SIZE; /* size of packet header */
890
+ params->npayload = CB_PACKET_HEADER_SIZE; /* size of packet header */
889
891
  switch (params->type) {
890
- case cmd_touch:
892
+ case cb_cmd_touch:
891
893
  params->cmd.touch.quiet = params->bucket->quiet;
892
894
  params->cmd.touch.ttl = params->bucket->default_ttl;
893
895
  cb_params_touch_parse_options(params, opts);
894
896
  cb_params_touch_parse_arguments(params, argc, argv);
895
897
  break;
896
- case cmd_remove:
898
+ case cb_cmd_remove:
897
899
  params->cmd.remove.quiet = params->bucket->quiet;
898
900
  if (argc == 2) {
899
901
  int type = TYPE(RARRAY_PTR(argv)[1]);
@@ -906,7 +908,7 @@ do_params_build(VALUE ptr)
906
908
  cb_params_remove_parse_options(params, opts);
907
909
  cb_params_remove_parse_arguments(params, argc, argv);
908
910
  break;
909
- case cmd_store:
911
+ case cb_cmd_store:
910
912
  if (argc == 1 && opts != Qnil) {
911
913
  /* put last hash back because it is the value */
912
914
  rb_ary_push(argv, opts);
@@ -915,18 +917,20 @@ do_params_build(VALUE ptr)
915
917
  }
916
918
  params->cmd.store.datatype = 0x00;
917
919
  params->cmd.store.ttl = params->bucket->default_ttl;
918
- params->cmd.store.flags = flags_set_format(params->bucket->default_flags,
920
+ params->cmd.store.flags = cb_flags_set_format(params->bucket->default_flags,
919
921
  params->bucket->default_format);
920
922
  params->cmd.store.observe = Qnil;
921
923
  cb_params_store_parse_options(params, opts);
922
924
  cb_params_store_parse_arguments(params, argc, argv);
923
925
  break;
924
- case cmd_get:
926
+ case cb_cmd_get:
925
927
  params->cmd.get.quiet = params->bucket->quiet;
926
928
  cb_params_get_parse_options(params, opts);
927
929
  cb_params_get_parse_arguments(params, argc, argv);
928
930
  break;
929
- case cmd_arith:
931
+ case cb_cmd_arith:
932
+ params->cmd.arith.create = params->bucket->default_arith_create;
933
+ params->cmd.arith.initial = params->bucket->default_arith_init;
930
934
  params->cmd.arith.delta = 1;
931
935
  params->cmd.arith.format = params->bucket->default_format;
932
936
  params->cmd.arith.ttl = params->bucket->default_ttl;
@@ -938,16 +942,16 @@ do_params_build(VALUE ptr)
938
942
  cb_params_arith_parse_options(params, opts);
939
943
  cb_params_arith_parse_arguments(params, argc, argv);
940
944
  break;
941
- case cmd_stats:
945
+ case cb_cmd_stats:
942
946
  cb_params_stats_parse_arguments(params, argc, argv);
943
947
  break;
944
- case cmd_version:
948
+ case cb_cmd_version:
945
949
  cb_params_version_alloc(params);
946
950
  break;
947
- case cmd_observe:
951
+ case cb_cmd_observe:
948
952
  cb_params_observe_parse_arguments(params, argc, argv);
949
953
  break;
950
- case cmd_unlock:
954
+ case cb_cmd_unlock:
951
955
  params->cmd.unlock.quiet = params->bucket->quiet;
952
956
  if (argc == 2) {
953
957
  int type = TYPE(RARRAY_PTR(argv)[1]);
@@ -966,7 +970,7 @@ do_params_build(VALUE ptr)
966
970
  }
967
971
 
968
972
  void
969
- cb_params_build(struct params_st *params, int argc, VALUE argv)
973
+ cb_params_build(struct cb_params_st *params, int argc, VALUE argv)
970
974
  {
971
975
  int fail = 0;
972
976
  struct build_params_st args;