buffer: Implement "readEntryHeader"

Add struct QueueEntryHeader along with it.

Tested: Unit Tested

Signed-off-by: Brandon Kim <brandonkim@google.com>
Change-Id: Icbfe8d39db4242664794d8c65a84488aeffd23a6
diff --git a/test/buffer_test.cpp b/test/buffer_test.cpp
index 290d1ca..9042f67 100644
--- a/test/buffer_test.cpp
+++ b/test/buffer_test.cpp
@@ -343,5 +343,49 @@
                 ElementsAreArray(expectedBytes));
 }
 
+class BufferEntryHeaderTest : public BufferWraparoundReadTest
+{
+  protected:
+    BufferEntryHeaderTest()
+    {
+        testEntryHeader.sequenceId = testSequenceId;
+        testEntryHeader.entrySize = testEntrySize;
+        testEntryHeader.checksum = testChecksum;
+        testEntryHeader.rdeCommandType = testRdeCommandType;
+    }
+    ~BufferEntryHeaderTest() override = default;
+
+    void wraparoundReadMock(std::span<std::uint8_t> expetedBytesOutput)
+    {
+        EXPECT_CALL(*dataInterfaceMockPtr, getMemoryRegionSize())
+            .WillOnce(Return(testRegionSize));
+        EXPECT_CALL(*dataInterfaceMockPtr, read(_, _))
+            .WillOnce(Return(std::vector<std::uint8_t>(
+                expetedBytesOutput.begin(), expetedBytesOutput.end())));
+
+        EXPECT_CALL(*dataInterfaceMockPtr, write(_, _))
+            .WillOnce(Return(expectedWriteSize));
+    }
+
+    static constexpr size_t entryHeaderSize = sizeof(struct QueueEntryHeader);
+    static constexpr uint16_t testSequenceId = 0;
+    static constexpr uint16_t testEntrySize = 0x20;
+    static constexpr uint8_t testChecksum = 1;
+    static constexpr uint8_t testRdeCommandType = 0x01;
+    size_t testOffset = 0x50;
+
+    struct QueueEntryHeader testEntryHeader
+    {};
+};
+
+TEST_F(BufferEntryHeaderTest, ReadEntryHeaderPass)
+{
+    uint8_t* testEntryHeaderPtr = reinterpret_cast<uint8_t*>(&testEntryHeader);
+    std::vector<uint8_t> testEntryHeaderVector(
+        testEntryHeaderPtr, testEntryHeaderPtr + entryHeaderSize);
+    wraparoundReadMock(testEntryHeaderVector);
+    EXPECT_EQ(bufferImpl->readEntryHeader(testOffset), testEntryHeader);
+}
+
 } // namespace
 } // namespace bios_bmc_smm_error_logger