[rialto] Enable rialto to receive messages longer than recv buffer

This cl allows rialto to receive messages longer then the receive
buffer of the connection manager. It achieves this by sending a
credit update to the peer when the receive buffer is empty.

Test: atest rialto_test
Bug: 292080257
Change-Id: Ia301d12b200c967e00796695748ff6cd9334b44d
diff --git a/rialto/src/communication.rs b/rialto/src/communication.rs
index 50722f2..1b94912 100644
--- a/rialto/src/communication.rs
+++ b/rialto/src/communication.rs
@@ -100,7 +100,16 @@
     }
 
     fn recv(&mut self, buffer: &mut [u8]) -> virtio_drivers::Result<usize> {
-        self.connection_manager.recv(self.peer_addr, self.peer_addr.port, buffer)
+        let bytes_read =
+            self.connection_manager.recv(self.peer_addr, self.peer_addr.port, buffer)?;
+
+        let buffer_available_bytes = self
+            .connection_manager
+            .recv_buffer_available_bytes(self.peer_addr, self.peer_addr.port)?;
+        if buffer_available_bytes == 0 && bytes_read > 0 {
+            self.connection_manager.update_credit(self.peer_addr, self.peer_addr.port)?;
+        }
+        Ok(bytes_read)
     }
 
     fn wait_for_send(&mut self, buffer: &[u8]) -> virtio_drivers::Result {