FrameSerializer: hide image data in user_data in CBOR
This commit is contained in:
@@ -321,8 +321,31 @@ void JFJochFrameDeserializer::ProcessDetTranslation(CborValue &value) {
|
||||
cborErr(cbor_value_leave_container(&value, &array_value));
|
||||
}
|
||||
|
||||
void JFJochFrameDeserializer::ProcessImageMessageUserDataElement(CborValue &value) {
|
||||
CborValue map_value;
|
||||
cborErr(cbor_value_enter_container(&value, &map_value));
|
||||
while (!cbor_value_at_end(&map_value)) {
|
||||
auto key = GetCBORString(map_value);
|
||||
|
||||
bool JFJochFrameDeserializer::ProcessImageMapElement(CborValue &value) {
|
||||
if (key == "spots")
|
||||
GetCBORSpots(map_value);
|
||||
else if (key == "rad_int_profile")
|
||||
GetCBORFloatArray(map_value, data_message.rad_int_profile);
|
||||
else if (key == "indexing_result")
|
||||
data_message.indexing_result = GetCBORUInt(map_value);
|
||||
else if (key == "jf_info")
|
||||
data_message.jf_info = GetCBORUInt(map_value) & UINT32_MAX;
|
||||
else if (key == "bunch_id")
|
||||
data_message.bunch_id = GetCBORUInt(map_value);
|
||||
else if (key == "timestamp")
|
||||
data_message.timestamp = GetCBORUInt(map_value);
|
||||
else
|
||||
cbor_value_advance(&map_value);
|
||||
}
|
||||
cborErr(cbor_value_leave_container(&value, &map_value));
|
||||
}
|
||||
|
||||
bool JFJochFrameDeserializer::ProcessImageMessageElement(CborValue &value) {
|
||||
if (cbor_value_at_end(&value))
|
||||
return false;
|
||||
else {
|
||||
@@ -332,18 +355,8 @@ bool JFJochFrameDeserializer::ProcessImageMapElement(CborValue &value) {
|
||||
data_message.number = GetCBORInt(value);
|
||||
else if (key == "data")
|
||||
ProcessImageData(value);
|
||||
else if (key == "spots")
|
||||
GetCBORSpots(value);
|
||||
else if (key == "rad_int_profile")
|
||||
GetCBORFloatArray(value, data_message.rad_int_profile);
|
||||
else if (key == "indexing_result")
|
||||
data_message.indexing_result = GetCBORUInt(value);
|
||||
else if (key == "jf_info")
|
||||
data_message.jf_info = GetCBORUInt(value) & UINT32_MAX;
|
||||
else if (key == "bunch_id")
|
||||
data_message.bunch_id = GetCBORUInt(value);
|
||||
else if (key == "timestamp")
|
||||
data_message.timestamp = GetCBORUInt(value);
|
||||
else if (key == "user_data")
|
||||
ProcessImageMessageUserDataElement(value);
|
||||
else
|
||||
cbor_value_advance(&value);
|
||||
return true;
|
||||
@@ -408,7 +421,7 @@ void JFJochFrameDeserializer::ProcessUnitCellElement(CborValue &value) {
|
||||
cborErr(cbor_value_leave_container(&value, &map_value));
|
||||
}
|
||||
|
||||
void JFJochFrameDeserializer::ProcessUserDataElement(CborValue &value) {
|
||||
void JFJochFrameDeserializer::ProcessStartMessageUserDataElement(CborValue &value) {
|
||||
CborValue map_value;
|
||||
cborErr(cbor_value_enter_container(&value, &map_value));
|
||||
while (!cbor_value_at_end(&map_value)) {
|
||||
@@ -519,7 +532,7 @@ bool JFJochFrameDeserializer::ProcessStartMessageElement(CborValue &value) {
|
||||
else if (key == "arm_date")
|
||||
start_message.arm_date = GetCBORString(value);
|
||||
else if (key == "user_data")
|
||||
ProcessUserDataElement(value);
|
||||
ProcessStartMessageUserDataElement(value);
|
||||
else
|
||||
cbor_value_advance(&value);
|
||||
return true;
|
||||
@@ -579,7 +592,7 @@ std::unique_lock<std::mutex> ul(m);
|
||||
DecodeType(map_value);
|
||||
switch (msg_type) {
|
||||
case Type::IMAGE:
|
||||
while (ProcessImageMapElement(map_value));
|
||||
while (ProcessImageMessageElement(map_value));
|
||||
break;
|
||||
case Type::START:
|
||||
start_message = StartMessage{
|
||||
|
||||
@@ -40,8 +40,9 @@ private:
|
||||
void ProcessImageData(CborValue &value);
|
||||
void ProcessPixelMaskElement(CborValue &value);
|
||||
void ProcessUnitCellElement(CborValue &value);
|
||||
void ProcessUserDataElement(CborValue &value);
|
||||
bool ProcessImageMapElement(CborValue &value);
|
||||
void ProcessStartMessageUserDataElement(CborValue &value);
|
||||
void ProcessImageMessageUserDataElement(CborValue &value);
|
||||
bool ProcessImageMessageElement(CborValue &value);
|
||||
bool ProcessStartMessageElement(CborValue &value);
|
||||
bool ProcessEndMessageElement(CborValue &value);
|
||||
public:
|
||||
|
||||
@@ -361,19 +361,25 @@ void JFJochFrameSerializer::SerializeSequenceEnd(const EndMessage& message) {
|
||||
void JFJochFrameSerializer::SerializeImage(const DataMessage& message) {
|
||||
buffer.resize(max_buffer_size);
|
||||
|
||||
CborEncoder encoder, mapEncoder;
|
||||
CborEncoder encoder, mapEncoder, userDataMapEncoder;
|
||||
cbor_encoder_init(&encoder, buffer.data(), buffer.size(), 0);
|
||||
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 9));
|
||||
cborErr(cbor_encoder_create_map(&encoder, &mapEncoder, 4));
|
||||
|
||||
CBOR_ENC(mapEncoder, "type", "image");
|
||||
CBOR_ENC(mapEncoder, "image_id", message.number);
|
||||
CBOR_ENC(mapEncoder, "data", message.image);
|
||||
CBOR_ENC(mapEncoder, "spots", message.spots);
|
||||
CBOR_ENC(mapEncoder, "rad_int_profile", message.rad_int_profile);
|
||||
CBOR_ENC(mapEncoder, "indexing_result", message.indexing_result);
|
||||
CBOR_ENC(mapEncoder, "bunch_id", message.bunch_id);
|
||||
CBOR_ENC(mapEncoder, "jf_info", (uint64_t) message.jf_info);
|
||||
CBOR_ENC(mapEncoder, "timestamp", message.timestamp);
|
||||
|
||||
cborErr(cbor_encode_text_stringz(&mapEncoder, "user_data"));
|
||||
cborErr(cbor_encoder_create_map(&mapEncoder, &userDataMapEncoder, 6));
|
||||
|
||||
CBOR_ENC(userDataMapEncoder, "spots", message.spots);
|
||||
CBOR_ENC(userDataMapEncoder, "rad_int_profile", message.rad_int_profile);
|
||||
CBOR_ENC(userDataMapEncoder, "indexing_result", message.indexing_result);
|
||||
CBOR_ENC(userDataMapEncoder, "bunch_id", message.bunch_id);
|
||||
CBOR_ENC(userDataMapEncoder, "jf_info", (uint64_t) message.jf_info);
|
||||
CBOR_ENC(userDataMapEncoder, "timestamp", message.timestamp);
|
||||
cborErr(cbor_encoder_close_container(&mapEncoder, &userDataMapEncoder));
|
||||
|
||||
cborErr(cbor_encoder_close_container(&encoder, &mapEncoder));
|
||||
|
||||
buffer.resize(cbor_encoder_get_buffer_size(&encoder, buffer.data()));
|
||||
|
||||
Reference in New Issue
Block a user