Module: CBson
- Defined in:
- ext/cbson/cbson.c
Constant Summary collapse
- VERSION =
ext_version
Class Method Summary collapse
- .deserialize(bson) ⇒ Object
- .max_bson_size ⇒ Object
- .serialize(doc, check_keys, move_id, max_size) ⇒ Object
- .update_max_bson_size(connection) ⇒ Object
Class Method Details
.deserialize(bson) ⇒ Object
906 907 908 909 910 911 912 913 914 915 |
# File 'ext/cbson/cbson.c', line 906
static VALUE method_deserialize(VALUE self, VALUE bson) {
const char* buffer = RSTRING_PTR(bson);
int remaining = RSTRING_LENINT(bson);
// NOTE we just swallow the size and end byte here
buffer += 4;
remaining -= 5;
return elements_to_hash(buffer, remaining);
}
|
.max_bson_size ⇒ Object
962 963 964 |
# File 'ext/cbson/cbson.c', line 962 static VALUE method_max_bson_size(VALUE self) { return INT2FIX(max_bson_size); } |
.serialize(doc, check_keys, move_id, max_size) ⇒ Object
620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 |
# File 'ext/cbson/cbson.c', line 620
static VALUE method_serialize(VALUE self, VALUE doc, VALUE check_keys,
VALUE move_id, VALUE max_size) {
VALUE result;
bson_buffer_t buffer = bson_buffer_new();
bson_buffer_set_max_size(buffer, FIX2INT(max_size));
if (buffer == NULL) {
rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c");
}
write_doc(buffer, doc, check_keys, move_id);
result = rb_str_new(bson_buffer_get_buffer(buffer), bson_buffer_get_position(buffer));
if (bson_buffer_free(buffer) != 0) {
rb_raise(rb_eRuntimeError, "failed to free buffer");
}
return result;
}
|
.update_max_bson_size(connection) ⇒ Object
957 958 959 960 |
# File 'ext/cbson/cbson.c', line 957
static VALUE method_update_max_bson_size(VALUE self, VALUE connection) {
max_bson_size = FIX2INT(rb_funcall(connection, rb_intern("max_bson_size"), 0));
return INT2FIX(max_bson_size);
}
|