Skip to content

Commit

Permalink
Merge branch 'main' into feat/HippyLogAdapter
Browse files Browse the repository at this point in the history
  • Loading branch information
open-hippy authored Jan 22, 2024
2 parents 19a1953 + 418afed commit 2f01585
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 11 deletions.
5 changes: 4 additions & 1 deletion modules/footstone/include/footstone/deserializer.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ class Deserializer {
Deserializer(const Deserializer&) = delete;
Deserializer& operator=(const Deserializer&) = delete;

void ReadHeader();
bool ReadHeader();

void ReadHeaderChecked();

bool ReadValue(HippyValue& value);

Expand Down Expand Up @@ -93,6 +95,7 @@ class Deserializer {
const uint8_t* position_;
const uint8_t* const end_;
uint32_t version_ = 0;
size_t length_ = 0;
};
} // namespace base
} // namespace tdf
18 changes: 14 additions & 4 deletions modules/footstone/src/deserializer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ using StringViewUtils = footstone::stringview::StringViewUtils;
constexpr uint32_t kSupportedVersion = 15;

Deserializer::Deserializer(const std::vector<const uint8_t>& data)
: position_(&data[0]), end_(&data[0] + data.size()) {}
: position_(&data[0]), end_(&data[0] + data.size()), length_(data.size()) {}

Deserializer::Deserializer(const uint8_t* data, size_t size) : position_(data), end_(data + size) {}
Deserializer::Deserializer(const uint8_t* data, size_t size) : position_(data), end_(data + size), length_(size) {}

Deserializer::~Deserializer() = default;

Expand All @@ -47,12 +47,22 @@ bool Deserializer::ReadValue(HippyValue& value) {
return ret;
}

void Deserializer::ReadHeader() {
bool Deserializer::ReadHeader() {
if (position_ < end_ && *position_ == static_cast<uint8_t>(SerializationTag::kVersion)) {
SerializationTag tag;
ReadTag(tag);
version_ = ReadVarint<uint32_t>();
FOOTSTONE_CHECK(version_ <= kSupportedVersion);
if (version_ <= kSupportedVersion) return true;
}
return false;
}

void Deserializer::ReadHeaderChecked() {
if (position_ < end_ && *position_ == static_cast<uint8_t>(SerializationTag::kVersion)) {
SerializationTag tag;
ReadTag(tag);
version_ = ReadVarint<uint32_t>();
FOOTSTONE_CHECK(version_ <= kSupportedVersion) << "deserializer version is " << version_ << ", buffer size" << length_;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,9 +265,12 @@ void DoCallBack(JNIEnv *j_env, jobject j_object,
if (j_buffer != nullptr && j_length > 0) {
jbyte params_buffer[j_length];
j_env->GetByteArrayRegion(j_buffer, j_offset, j_length, params_buffer);
footstone::value::Deserializer deserializer((const uint8_t*) params_buffer,
footstone::check::checked_numeric_cast<jlong, size_t>(j_length));
deserializer.ReadHeader();
footstone::value::Deserializer deserializer((const uint8_t*)params_buffer,
footstone::check::checked_numeric_cast<jlong, size_t>(j_length));
ret = deserializer.ReadHeader();
FOOTSTONE_CHECK(ret) << "Deserializer read header failed. function name " << func_name << ", root id " << root_id
<< ", node id " << node_id << "callback id " << cb_id << ", offset " << j_offset << ", length "
<< j_length;
deserializer.ReadValue(*params);
}

Expand Down Expand Up @@ -334,9 +337,12 @@ void OnReceivedEvent(JNIEnv* j_env, jobject j_object, jint j_render_manager_id,
jbyte params_buffer[j_length];
j_env->GetByteArrayRegion(j_buffer, j_offset, j_length, params_buffer);
params = std::make_shared<HippyValue>();
footstone::value::Deserializer deserializer((const uint8_t*) params_buffer,
footstone::check::checked_numeric_cast<jlong, size_t>(j_length));
deserializer.ReadHeader();
footstone::value::Deserializer deserializer((const uint8_t*)params_buffer,
footstone::check::checked_numeric_cast<jlong, size_t>(j_length));
ret = deserializer.ReadHeader();
FOOTSTONE_CHECK(ret) << "Deserializer read header failed. event name " << event_name << ", root id " << root_id
<< ", node id " << dom_id << ", offset " << j_offset << ", length "
<< j_length;
deserializer.ReadValue(*params);
}

Expand Down

0 comments on commit 2f01585

Please sign in to comment.