MCPcopy Create free account
hub / github.com/TileDB-Inc/TileDB / array_deserialize

Function array_deserialize

tiledb/sm/serialization/array.cc:542–593  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

540}
541
542void array_deserialize(
543 Array* array,
544 SerializationType serialize_type,
545 span<const char> serialized_buffer,
546 ContextResources& resources,
547 shared_ptr<MemoryTracker> memory_tracker) {
548 try {
549 switch (serialize_type) {
550 case SerializationType::JSON: {
551 ::capnp::MallocMessageBuilder message_builder;
552 capnp::Array::Builder array_builder =
553 message_builder.initRoot<capnp::Array>();
554 utils::decode_json_message(serialized_buffer, array_builder);
555 capnp::Array::Reader array_reader = array_builder.asReader();
556 array_from_capnp(array_reader, resources, array, true, memory_tracker);
557 break;
558 }
559 case SerializationType::CAPNP: {
560 // Set traversal limit from config
561 uint64_t limit = resources.config()
562 .get<uint64_t>("rest.capnp_traversal_limit")
563 .value();
564 ::capnp::ReaderOptions readerOptions;
565 // capnp uses the limit in words
566 readerOptions.traversalLimitInWords = limit / sizeof(::capnp::word);
567
568 const auto mBytes =
569 reinterpret_cast<const kj::byte*>(serialized_buffer.data());
570 ::capnp::FlatArrayMessageReader reader(
571 kj::arrayPtr(
572 reinterpret_cast<const ::capnp::word*>(mBytes),
573 serialized_buffer.size() / sizeof(::capnp::word)),
574 readerOptions);
575 capnp::Array::Reader array_reader = reader.getRoot<capnp::Array>();
576 array_from_capnp(array_reader, resources, array, true, memory_tracker);
577 break;
578 }
579 default: {
580 throw ArraySerializationException(
581 "Error deserializing array; Unknown serialization type passed");
582 }
583 }
584
585 } catch (kj::Exception& e) {
586 throw ArraySerializationException(
587 "Error deserializing array; kj::Exception: " +
588 std::string(e.getDescription().cStr()));
589 } catch (std::exception& e) {
590 throw ArraySerializationException(
591 "Error deserializing array; exception " + std::string(e.what()));
592 }
593}
594
595Status array_open_serialize(
596 const Array& array,

Callers 4

tiledb_deserialize_arrayFunction · 0.85
post_array_from_restMethod · 0.85
unit-capi-array.ccFile · 0.85
ser_des_arrayMethod · 0.85

Calls 10

decode_json_messageFunction · 0.85
array_from_capnpFunction · 0.85
asReaderMethod · 0.45
valueMethod · 0.45
configMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
whatMethod · 0.45

Tested by

no test coverage detected