Index: native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.cc |
diff --git a/native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.cc b/native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.cc |
index 3e5c330b52f35babbe5ffd7a5ccf38da6e06b953..cf4a6516764cd43e00aa2651c0c0846b6aaaeb04 100644 |
--- a/native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.cc |
+++ b/native_client_sdk/src/libraries/nacl_io/socket/fifo_packet.cc |
@@ -68,4 +68,28 @@ void FIFOPacket::WritePacket(Packet* packet) { |
packets_.push_front(packet); |
} |
+size_t FIFOPacket::Read(void* buf, size_t len) { |
+ Packet* packet = ReadPacket(); |
+ if (!packet) |
+ return 0; |
+ |
+ size_t bytes = packet->len(); |
+ if (bytes > len) |
+ bytes = len; |
+ memcpy(buf, packet->buffer(), bytes); |
+ |
+ delete packet; |
+ return bytes; |
+} |
+ |
+size_t FIFOPacket::Write(const void* buf, size_t len) { |
+ if (len > WriteAvailable()) |
+ return 0; |
+ |
+ Packet* packet = new Packet(NULL); |
+ packet->Copy(buf, len, 0); |
+ WritePacket(packet); |
+ return len; |
+} |
+ |
} // namespace nacl_io |