SpringStudent commented on code in PR #13155:
URL: https://github.com/apache/dubbo/pull/13155#discussion_r1351663748


##########
dubbo-common/src/main/java/org/apache/dubbo/rpc/model/ReflectionServiceDescriptor.java:
##########
@@ -89,6 +98,21 @@ private void initMethods() {
                     +" stream method signatures. method(" + methodName + ")");
         });
     }
+    
+    public static boolean isProtobufClass(Class<?> clazz) {
+        while (clazz != Object.class && clazz != null) {
+            Class<?>[] interfaces = clazz.getInterfaces();
+            if (interfaces.length > 0) {
+                for (Class<?> clazzInterface : interfaces) {
+                    if 
(PROTOBUF_MESSAGE_CLASS_NAME.equalsIgnoreCase(clazzInterface.getName())) {
+                        return true;
+                    }
+                }
+            }
+            clazz = clazz.getSuperclass();

Review Comment:
   I've written some other implementations of the isProtobufClass method. And 
attach some test results
   `####class is pb class start
   isProtobufClass cost=35
   isProtobufClass2 cost=74
   isProtobufClass3 cost=55
   isProtobufClass4 cost=4
   ####class is pb class end
   ####class is not pb class start
   isProtobufClass cost=11
   isProtobufClass2 cost=46
   isProtobufClass3 cost=55
   isProtobufClass4 cost=4
   ####class is not pb class end`



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to