| 1338 | } |
| 1339 | |
| 1340 | std::pair<std::string, shared_ptr<ArraySchema>> array_create_deserialize( |
| 1341 | SerializationType serialize_type, |
| 1342 | span<const char> serialized_buffer, |
| 1343 | shared_ptr<MemoryTracker> memory_tracker) { |
| 1344 | capnp::ArrayCreateRequest::Reader array_create_reader; |
| 1345 | ::capnp::MallocMessageBuilder message_builder; |
| 1346 | |
| 1347 | try { |
| 1348 | switch (serialize_type) { |
| 1349 | case SerializationType::JSON: { |
| 1350 | capnp::ArrayCreateRequest::Builder array_create_builder = |
| 1351 | message_builder.initRoot<capnp::ArrayCreateRequest>(); |
| 1352 | utils::decode_json_message(serialized_buffer, array_create_builder); |
| 1353 | array_create_reader = array_create_builder.asReader(); |
| 1354 | return array_create_from_capnp(array_create_reader, memory_tracker); |
| 1355 | } |
| 1356 | case SerializationType::CAPNP: { |
| 1357 | const auto mBytes = |
| 1358 | reinterpret_cast<const kj::byte*>(serialized_buffer.data()); |
| 1359 | ::capnp::FlatArrayMessageReader reader(kj::arrayPtr( |
| 1360 | reinterpret_cast<const ::capnp::word*>(mBytes), |
| 1361 | serialized_buffer.size() / sizeof(::capnp::word))); |
| 1362 | array_create_reader = reader.getRoot<capnp::ArrayCreateRequest>(); |
| 1363 | return array_create_from_capnp(array_create_reader, memory_tracker); |
| 1364 | } |
| 1365 | default: { |
| 1366 | throw ArraySchemaSerializationException( |
| 1367 | "Error deserializing array creation request; Unknown serialization " |
| 1368 | "type passed"); |
| 1369 | } |
| 1370 | } |
| 1371 | } catch (kj::Exception& e) { |
| 1372 | throw ArraySchemaSerializationException( |
| 1373 | "Error deserializing array creation request; kj::Exception: " + |
| 1374 | std::string(e.getDescription().cStr())); |
| 1375 | } catch (std::exception& e) { |
| 1376 | throw ArraySchemaSerializationException( |
| 1377 | "Error deserializing array creation request; exception " + |
| 1378 | std::string(e.what())); |
| 1379 | } |
| 1380 | } |
| 1381 | |
| 1382 | Status nonempty_domain_serialize( |
| 1383 | const Dimension* dimension, |
no test coverage detected