chia7712 commented on a change in pull request #9563:
URL: https://github.com/apache/kafka/pull/9563#discussion_r518513351



##########
File path: clients/src/main/java/org/apache/kafka/common/protocol/Writable.java
##########
@@ -33,6 +35,23 @@
     void writeVarint(int i);
     void writeVarlong(long i);
 
+    default void writeApiMessage(

Review comment:
       It is used by only ```SendBuilder```. How about moving it to 
```SendBuilder```? 

##########
File path: clients/src/main/java/org/apache/kafka/common/protocol/Writable.java
##########
@@ -33,6 +35,23 @@
     void writeVarint(int i);
     void writeVarlong(long i);
 
+    default void writeApiMessage(
+        ApiMessage message,
+        ObjectSerializationCache serializationCache,
+        short version
+    ) {
+        message.write(this, serializationCache, version);
+    }
+
+    default void writeRecords(BaseRecords records) {

Review comment:
       Does it need null check (maybe no-op)?

##########
File path: 
generator/src/main/java/org/apache/kafka/message/MessageDataGenerator.java
##########
@@ -1581,56 +1570,56 @@ private void generateVariableLengthFieldSize(FieldSpec 
field,
                         
headerGenerator.addImport(MessageGenerator.BYTE_UTILS_CLASS);
                         buffer.printf("_cache.setArraySizeInBytes(%s, 
_arraySize);%n",
                             field.camelCaseName());
-                        buffer.printf("_size += _arraySize + 
ByteUtils.sizeOfUnsignedVarint(_arraySize);%n");
+                        
buffer.printf("_size.addBytes(ByteUtils.sizeOfUnsignedVarint(_arraySize.totalSize()));%n");
+                        buffer.printf("_size.add(_arraySize);%n");
                     } else {
-                        buffer.printf("_size += _arraySize;%n");
+                        buffer.printf("_size.add(_arraySize);%n");
                     }
                 } else if (field.type().isBytes()) {
+                    buffer.printf("MessageSize _bytesSize = new 
MessageSize();%n");
                     if (field.zeroCopy()) {
-                        buffer.printf("int _bytesSize = %s.remaining();%n", 
field.camelCaseName());
+                        
buffer.printf("_bytesSize.addZeroCopyBytes(%s.remaining());%n", 
field.camelCaseName());
                     } else {
-                        buffer.printf("int _bytesSize = %s.length;%n", 
field.camelCaseName());
+                        buffer.printf("_bytesSize.addBytes(%s.length);%n", 
field.camelCaseName());
                     }
                     
VersionConditional.forVersions(fieldFlexibleVersions(field), possibleVersions).
                         ifMember(__ -> {
                             
headerGenerator.addImport(MessageGenerator.BYTE_UTILS_CLASS);
                             if (field.zeroCopy()) {
-                                buffer.printf("_bytesSize += " +
-                                        
"ByteUtils.sizeOfUnsignedVarint(%s.remaining() + 1);%n", field.camelCaseName());
+                                buffer.printf("_bytesSize.addBytes(" +
+                                        
"ByteUtils.sizeOfUnsignedVarint(%s.remaining() + 1));%n", 
field.camelCaseName());
                             } else {
-                                buffer.printf("_bytesSize += 
ByteUtils.sizeOfUnsignedVarint(%s.length + 1);%n",
+                                
buffer.printf("_bytesSize.addBytes(ByteUtils.sizeOfUnsignedVarint(%s.length + 
1));%n",
                                     field.camelCaseName());
                             }
                         }).
                         ifNotMember(__ -> {
-                            buffer.printf("_bytesSize += 4;%n");
+                            buffer.printf("_bytesSize.addBytes(4);%n");
                         }).
                         generate(buffer);
                     if (tagged) {
                         
headerGenerator.addImport(MessageGenerator.BYTE_UTILS_CLASS);
-                        buffer.printf("_size += _bytesSize + 
ByteUtils.sizeOfUnsignedVarint(_bytesSize);%n");
-                    } else {
-                        buffer.printf("_size += _bytesSize;%n");
+                        
buffer.printf("_size.addBytes(ByteUtils.sizeOfUnsignedVarint(_bytesSize.totalSize()));%n");
                     }
+                    buffer.printf("_size.add(_bytesSize);%n");
                 } else if (field.type().isRecords()) {
-                    buffer.printf("int _recordsSize = %s.sizeInBytes();%n", 
field.camelCaseName());
+                    buffer.printf("_size.addBytes(%s.sizeInBytes());%n", 
field.camelCaseName());

Review comment:
       Why it is not ```addZeroCopyBytes```?




----------------------------------------------------------------
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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to