| Gilbert Chen | 6c7fed4 | 2022-02-22 15:40:17 +0000 | [diff] [blame] | 1 | #pragma once | 
|  | 2 |  | 
|  | 3 | #include "platform-mc/terminus_manager.hpp" | 
|  | 4 |  | 
|  | 5 | #include <queue> | 
|  | 6 |  | 
|  | 7 | #include <gmock/gmock.h> | 
|  | 8 |  | 
|  | 9 | namespace pldm | 
|  | 10 | { | 
|  | 11 | namespace platform_mc | 
|  | 12 | { | 
|  | 13 |  | 
|  | 14 | class MockTerminusManager : public TerminusManager | 
|  | 15 | { | 
|  | 16 | public: | 
|  | 17 | MockTerminusManager(sdeventplus::Event& event, RequesterHandler& handler, | 
|  | 18 | pldm::InstanceIdDb& instanceIdDb, | 
|  | 19 | TerminiMapper& termini, Manager* manager) : | 
| Thu Nguyen | 51d66b5 | 2024-08-06 09:15:55 +0000 | [diff] [blame] | 20 | TerminusManager(event, handler, instanceIdDb, termini, manager, | 
|  | 21 | pldm::BmcMctpEid) | 
| Gilbert Chen | 6c7fed4 | 2022-02-22 15:40:17 +0000 | [diff] [blame] | 22 | {} | 
|  | 23 |  | 
| Patrick Williams | 16c2a0a | 2024-08-16 15:20:59 -0400 | [diff] [blame] | 24 | exec::task<int> sendRecvPldmMsgOverMctp( | 
|  | 25 | mctp_eid_t /*eid*/, Request& /*request*/, const pldm_msg** responseMsg, | 
|  | 26 | size_t* responseLen) override | 
| Gilbert Chen | 6c7fed4 | 2022-02-22 15:40:17 +0000 | [diff] [blame] | 27 | { | 
|  | 28 | if (responseMsgs.empty() || responseMsg == nullptr || | 
|  | 29 | responseLen == nullptr) | 
|  | 30 | { | 
|  | 31 | co_return PLDM_ERROR; | 
|  | 32 | } | 
|  | 33 |  | 
|  | 34 | *responseMsg = responseMsgs.front(); | 
|  | 35 | *responseLen = responseLens.front() - sizeof(pldm_msg_hdr); | 
|  | 36 |  | 
|  | 37 | responseMsgs.pop(); | 
|  | 38 | responseLens.pop(); | 
|  | 39 | co_return PLDM_SUCCESS; | 
|  | 40 | } | 
|  | 41 |  | 
|  | 42 | int enqueueResponse(pldm_msg* responseMsg, size_t responseLen) | 
|  | 43 | { | 
|  | 44 | if (responseMsg == nullptr) | 
|  | 45 | { | 
|  | 46 | return PLDM_ERROR_INVALID_DATA; | 
|  | 47 | } | 
|  | 48 |  | 
|  | 49 | if (responseLen <= sizeof(pldm_msg_hdr)) | 
|  | 50 | { | 
|  | 51 | return PLDM_ERROR_INVALID_LENGTH; | 
|  | 52 | } | 
|  | 53 |  | 
|  | 54 | responseMsgs.push(responseMsg); | 
|  | 55 | responseLens.push(responseLen); | 
|  | 56 | return PLDM_SUCCESS; | 
|  | 57 | } | 
|  | 58 |  | 
|  | 59 | int clearQueuedResponses() | 
|  | 60 | { | 
|  | 61 | while (!responseMsgs.empty()) | 
|  | 62 | { | 
|  | 63 | responseMsgs.pop(); | 
|  | 64 | responseLens.pop(); | 
|  | 65 | } | 
|  | 66 | return PLDM_SUCCESS; | 
|  | 67 | } | 
|  | 68 |  | 
|  | 69 | std::queue<pldm_msg*> responseMsgs; | 
|  | 70 | std::queue<size_t> responseLens; | 
|  | 71 | }; | 
|  | 72 |  | 
|  | 73 | } // namespace platform_mc | 
|  | 74 | } // namespace pldm |