# HG changeset patch
# User Yuya Nishihara <y...@tcha.org>
# Date 1523154118 -32400
#      Sun Apr 08 11:21:58 2018 +0900
# Node ID bb8635c7a6c30b988e9439ed9057857250838a7a
# Parent  9cf44f780dc77847c7d8628c623148cadd0c252f
wireproto: show unknown id and flags in repr(frame)

Perhaps we'll want it for debugging.

diff --git a/mercurial/wireprotoframing.py b/mercurial/wireprotoframing.py
--- a/mercurial/wireprotoframing.py
+++ b/mercurial/wireprotoframing.py
@@ -110,10 +110,13 @@ ARGUMENT_RECORD_HEADER = struct.Struct(r
 
 def humanflags(mapping, value):
     """Convert a numeric flags value to a human value, using a mapping 
table."""
+    namemap = {v: k for k, v in mapping.iteritems()}
     flags = []
-    for val, name in sorted({v: k for k, v in 
mapping.iteritems()}.iteritems()):
+    val = 1
+    while value >= val:
         if value & val:
-            flags.append(name)
+            flags.append(namemap.get(val, '<unknown 0x%02x>' % val))
+        val <<= 1
 
     return b'|'.join(flags)
 
@@ -140,7 +143,7 @@ class frame(object):
     payload = attr.ib()
 
     def __repr__(self):
-        typename = '<unknown>'
+        typename = '<unknown 0x%02x>' % self.typeid
         for name, value in FRAME_TYPES.iteritems():
             if value == self.typeid:
                 typename = name
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to