in scripts/qlog_parser.py [0:0]
def parse_line(line):
event = {}
event_scid = ""
pattern = r'\[(.*?)\]'
matches = re.findall(pattern, line)
matches = [segment.strip() for segment in matches]
if(len(matches) != 2):
return None, event_scid
time_str = matches[0]
dt_object = datetime.datetime.strptime(time_str, "%Y/%m/%d %H:%M:%S %f")
event["time"] = dt_object.timestamp() * 1000
event["name"] = matches[1]
if event["name"] in connectivity_event_list_:
event["name"] = "connectivity:" + event["name"]
elif event["name"] in quic_event_list_:
event["name"] = "quic:" + event["name"]
elif event["name"] in security_event_list_:
event["name"] = "security:" + event["name"]
elif event["name"] in recovery_event_list_:
if event["name"] == "rec_parameters_set" or event["name"] == "rec_metrics_updated":
event["name"] = event["name"][4:]
event["name"] = "recovery:" + event["name"]
elif event["name"] in http_event_list_:
if event["name"] == "push_resolved":
event["name"] = "h3:push_resolved"
else:
event["name"] = "h3:" + event["name"][5:]
else:
return None, event_scid
if matches[1] in ["packet_sent", "packet_received", "mtu_updated", "datagrams_sent", "datagrams_received", "packets_acked"]:
event["path"] = get_path_id(line)
if matches[1] == "packet_sent" or matches[1] == "packet_received":
event["data"], event_scid = parse_packet_sent_and_recv(line)
return event, event_scid
if matches[1] == "datagrams_sent" or matches[1] == "datagrams_received":
event["data"], event_scid = parse_datagrams_sent_or_recv(line)
return event, event_scid
if matches[1] in ["server_listening", "connection_started", "connection_close", "connection_state_updated",
"path_assigned", "mtu_updated", "alpn_information","parameters_set", "packet_buffered", "packets_acked", "stream_state_updated",
"frames_processed", "stream_data_moved", "rec_parameters_set", "rec_metrics_updated", "congestion_state_updated",
"packet_lost", "http_parameters_set", "http_frame_created", "http_frame_parse"]:
function_name = "parse_" + matches[1]
func = globals()[function_name]
(event["data"], event_scid) = func(line)
return event, event_scid
else:
return None, None