MCPcopy Index your code
hub / github.com/python/cpython / read_logcat

Function read_logcat

Android/android.py:601–633  ·  view source on GitHub ↗
(stream)

Source from the content-addressed store, hash-verified

599# described at https://android.stackexchange.com/a/74660. All supported versions
600# of Android use format version 2 or later.
601async def read_logcat(stream):
602 async def read_bytes(size):
603 return await stream.readexactly(size)
604
605 async def read_int(size):
606 return int.from_bytes(await read_bytes(size), "little")
607
608 payload_len = await read_int(2)
609 if payload_len < 2:
610 # 1 byte for priority, 1 byte for null terminator of tag.
611 raise ValueError(f"payload length {payload_len} is too short")
612
613 header_len = await read_int(2)
614 if header_len < 4:
615 raise ValueError(f"header length {header_len} is too short")
616 await read_bytes(header_len - 4) # Ignore other header fields.
617
618 priority_int = await read_int(1)
619 try:
620 priority = LogPriority(priority_int)
621 except ValueError:
622 priority = LogPriority.UNKNOWN
623
624 payload_fields = (await read_bytes(payload_len - 1)).split(b"\0")
625 if len(payload_fields) < 2:
626 raise ValueError(
627 f"payload {payload!r} does not contain at least 2 "
628 f"null-separated fields"
629 )
630 tag, message, *_ = [
631 field.decode(*DECODE_ARGS) for field in payload_fields
632 ]
633 return priority, tag, message
634
635
636def stop_app(serial):

Callers 1

logcat_taskFunction · 0.85

Calls 5

read_intFunction · 0.85
read_bytesFunction · 0.85
LogPriorityClass · 0.85
splitMethod · 0.45
decodeMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…