Croway commented on code in PR #27958:
URL: https://github.com/apache/camel/pull/27958#discussion_r4302737516


##########
dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/RuntimeService.java:
##########
@@ -123,6 +132,68 @@ public String stopApplication(long pid) {
         return RuntimeHelper.stopApplication(pid);
     }
 
+    /**
+     * The size of the file the CLI connector appends the messages of the 
receive console to
+     * ({@code {pid}-receive.json}, read by {@code camel cmd receive} too), to 
read only what arrives after this point.
+     */
+    public long receiveFileSize(long pid) {
+        try {
+            Path file = receiveFile(pid);
+            return Files.exists(file) ? Files.size(file) : 0;
+        } catch (IOException e) {
+            return 0;
+        }
+    }
+
+    /**
+     * The messages the CLI connector appended to the receive file after the 
given offset: each complete line is a
+     * {@code {"messages": [...]}} dump of the receive console. Only what was 
appended after the offset is read, as the
+     * file is append-only and kept across sessions.
+     */
+    public List<JsonObject> readReceivedMessages(long pid, long offset) {
+        List<JsonObject> messages = new ArrayList<>();
+        Path file = receiveFile(pid);
+        try {
+            if (!Files.exists(file)) {
+                return messages;
+            }
+            String text;
+            try (SeekableByteChannel channel = Files.newByteChannel(file, 
StandardOpenOption.READ)) {
+                long size = channel.size();
+                // camel cmd receive --action=clear rewrites the file: read it 
from the start then
+                long from = offset <= size ? offset : 0;
+                ByteBuffer buffer = ByteBuffer.allocate(Math.toIntExact(size - 
from));

Review Comment:
   Same point as your thread from yesterday on this line, answered there: 
`offset` is the size of the file at the start of the call (or 0 after a clear, 
which truncates the file), so `size - from` is what the connector appended 
during one call of at most 60 seconds and cannot reach 2 GB. Clamping to 
`Integer.MAX_VALUE` would allocate a 2 GB buffer and silently truncate the 
read, which is worse than a loud `ArithmeticException` in a case that cannot 
happen; kept as it is.
   
   _Claude Code on behalf of Croway_



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

Reply via email to