| 388 | } |
| 389 | |
| 390 | Status metadata_serialize( |
| 391 | Metadata* metadata, |
| 392 | SerializationType serialize_type, |
| 393 | SerializationBuffer& serialized_buffer) { |
| 394 | if (metadata == nullptr) |
| 395 | return LOG_STATUS(Status_SerializationError( |
| 396 | "Error serializing array metadata; array instance is null")); |
| 397 | |
| 398 | try { |
| 399 | // Serialize |
| 400 | ::capnp::MallocMessageBuilder message; |
| 401 | auto builder = message.initRoot<capnp::ArrayMetadata>(); |
| 402 | |
| 403 | RETURN_NOT_OK(metadata_to_capnp(metadata, &builder)); |
| 404 | |
| 405 | // Copy to buffer |
| 406 | switch (serialize_type) { |
| 407 | case SerializationType::JSON: { |
| 408 | ::capnp::JsonCodec json; |
| 409 | kj::String capnp_json = json.encode(builder); |
| 410 | serialized_buffer.assign(capnp_json); |
| 411 | break; |
| 412 | } |
| 413 | case SerializationType::CAPNP: { |
| 414 | kj::Array<::capnp::word> protomessage = messageToFlatArray(message); |
| 415 | serialized_buffer.assign(protomessage.asChars()); |
| 416 | break; |
| 417 | } |
| 418 | default: { |
| 419 | return LOG_STATUS(Status_SerializationError( |
| 420 | "Error serializing array metadata; Unknown serialization type " |
| 421 | "passed")); |
| 422 | } |
| 423 | } |
| 424 | |
| 425 | } catch (kj::Exception& e) { |
| 426 | return LOG_STATUS(Status_SerializationError( |
| 427 | "Error serializing array metadata; kj::Exception: " + |
| 428 | std::string(e.getDescription().cStr()))); |
| 429 | } catch (std::exception& e) { |
| 430 | return LOG_STATUS(Status_SerializationError( |
| 431 | "Error serializing array metadata; exception " + |
| 432 | std::string(e.what()))); |
| 433 | } |
| 434 | |
| 435 | return Status::Ok(); |
| 436 | } |
| 437 | |
| 438 | Status metadata_deserialize( |
| 439 | Metadata* metadata, |
no test coverage detected