Handle event log parsing errors without crashing.
Instead of crashing when encountering an event log that cannot be parsed it is better to print an error message, skip the file and continue. Bug: webrtc:10337 Change-Id: I5dbca18e456c14e5a92af068f82e88cb17e8de9c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133185 Reviewed-by: Minyue Li <minyue@webrtc.org> Commit-Queue: Ivo Creusen <ivoc@webrtc.org> Cr-Commit-Position: refs/heads/master@{#27727}
This commit is contained in:
@ -22,15 +22,23 @@ namespace test {
|
||||
NetEqEventLogInput* NetEqEventLogInput::CreateFromFile(
|
||||
const std::string& file_name,
|
||||
absl::optional<uint32_t> ssrc_filter) {
|
||||
return new NetEqEventLogInput(
|
||||
RtcEventLogSource::CreateFromFile(file_name, ssrc_filter));
|
||||
auto event_log_src =
|
||||
RtcEventLogSource::CreateFromFile(file_name, ssrc_filter);
|
||||
if (!event_log_src) {
|
||||
return nullptr;
|
||||
}
|
||||
return new NetEqEventLogInput(std::move(event_log_src));
|
||||
}
|
||||
|
||||
NetEqEventLogInput* NetEqEventLogInput::CreateFromString(
|
||||
const std::string& file_contents,
|
||||
absl::optional<uint32_t> ssrc_filter) {
|
||||
return new NetEqEventLogInput(
|
||||
RtcEventLogSource::CreateFromString(file_contents, ssrc_filter));
|
||||
auto event_log_src =
|
||||
RtcEventLogSource::CreateFromString(file_contents, ssrc_filter);
|
||||
if (!event_log_src) {
|
||||
return nullptr;
|
||||
}
|
||||
return new NetEqEventLogInput(std::move(event_log_src));
|
||||
}
|
||||
|
||||
absl::optional<int64_t> NetEqEventLogInput::NextOutputEventTime() const {
|
||||
|
||||
@ -41,8 +41,11 @@ std::unique_ptr<RtcEventLogSource> RtcEventLogSource::CreateFromFile(
|
||||
absl::optional<uint32_t> ssrc_filter) {
|
||||
auto source = std::unique_ptr<RtcEventLogSource>(new RtcEventLogSource());
|
||||
ParsedRtcEventLog parsed_log;
|
||||
RTC_CHECK(parsed_log.ParseFile(file_name));
|
||||
RTC_CHECK(source->Initialize(parsed_log, ssrc_filter));
|
||||
if (!parsed_log.ParseFile(file_name) ||
|
||||
!source->Initialize(parsed_log, ssrc_filter)) {
|
||||
std::cerr << "Error while parsing event log, skipping." << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
return source;
|
||||
}
|
||||
|
||||
@ -51,8 +54,11 @@ std::unique_ptr<RtcEventLogSource> RtcEventLogSource::CreateFromString(
|
||||
absl::optional<uint32_t> ssrc_filter) {
|
||||
auto source = std::unique_ptr<RtcEventLogSource>(new RtcEventLogSource());
|
||||
ParsedRtcEventLog parsed_log;
|
||||
RTC_CHECK(parsed_log.ParseString(file_contents));
|
||||
RTC_CHECK(source->Initialize(parsed_log, ssrc_filter));
|
||||
if (!parsed_log.ParseString(file_contents) ||
|
||||
!source->Initialize(parsed_log, ssrc_filter)) {
|
||||
std::cerr << "Error while parsing event log, skipping." << std::endl;
|
||||
return nullptr;
|
||||
}
|
||||
return source;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user