Line data Source code
1 : // Copyright 2024 Accenture. 2 : 3 : #include "transport/AbstractTransportLayer.h" 4 : 5 : #include "common/busid/BusId.h" 6 : #include "transport/TransportLogger.h" 7 : 8 : namespace transport 9 : { 10 : using ::util::logger::Logger; 11 : using ::util::logger::TRANSPORT; 12 : 13 : // explicit 14 164 : AbstractTransportLayer::AbstractTransportLayer(uint8_t const busId) 15 164 : : fBusId(busId), fProvidingListenerHelper(busId) 16 164 : {} 17 : 18 : // virtual 19 1 : AbstractTransportLayer::ErrorCode AbstractTransportLayer::init() { return ErrorCode::TP_OK; } 20 : 21 : // virtual 22 1 : bool AbstractTransportLayer::shutdown(ShutdownDelegate) { return SYNC_SHUTDOWN_COMPLETE; } 23 : 24 : /* 25 : * 26 : * TransportMessageProvidingListenerHelper 27 : * 28 : */ 29 : 30 164 : AbstractTransportLayer::TransportMessageProvidingListenerHelper:: 31 164 : TransportMessageProvidingListenerHelper(uint8_t const busId) 32 164 : : fBusId(busId), fpMessageProvider(nullptr), fpMessageListener(nullptr) 33 0 : {} 34 : 35 : // virtual 36 : ITransportMessageProvidingListener::ErrorCode 37 19 : AbstractTransportLayer::TransportMessageProvidingListenerHelper::getTransportMessage( 38 : uint8_t const srcBusId, 39 : uint16_t const sourceId, 40 : uint16_t const targetId, 41 : uint16_t const size, 42 : ::estd::slice<uint8_t const> const& peek, 43 : TransportMessage*& pTransportMessage) 44 : { 45 19 : if (fpMessageProvider != nullptr) 46 : { 47 18 : return fpMessageProvider->getTransportMessage( 48 18 : srcBusId, sourceId, targetId, size, peek, pTransportMessage); 49 : } 50 1 : Logger::warn( 51 : TRANSPORT, 52 : "AbstractTransportLayer(%s)::getTransportMessage() with no registered " 53 : "provider!", 54 1 : ::common::busid::BusIdTraits::getName(fBusId)); 55 1 : pTransportMessage = nullptr; 56 1 : return ITransportMessageProvidingListener::ErrorCode::TPMSG_NO_MSG_AVAILABLE; 57 : } 58 : 59 : // virtual 60 19 : void AbstractTransportLayer::TransportMessageProvidingListenerHelper::releaseTransportMessage( 61 : TransportMessage& transportMessage) 62 : { 63 19 : if (fpMessageProvider != nullptr) 64 : { 65 18 : fpMessageProvider->releaseTransportMessage(transportMessage); 66 : } 67 19 : } 68 : 69 : // virtual 70 : ITransportMessageListener::ReceiveResult 71 22 : AbstractTransportLayer::TransportMessageProvidingListenerHelper::messageReceived( 72 : uint8_t const sourceBusId, 73 : TransportMessage& transportMessage, 74 : ITransportMessageProcessedListener* const pNotificationListener) 75 : { 76 22 : if (fpMessageListener != nullptr) 77 : { 78 21 : return fpMessageListener->messageReceived( 79 21 : sourceBusId, transportMessage, pNotificationListener); 80 : } 81 2 : Logger::warn( 82 : TRANSPORT, 83 : "AbstractTransportLayer(%s)::messageReceived() with no registered " 84 : "listener!", 85 1 : ::common::busid::BusIdTraits::getName(fBusId)); 86 1 : return ReceiveResult::RECEIVED_ERROR; 87 : } 88 : 89 : // virtual 90 2 : void AbstractTransportLayer::TransportMessageProvidingListenerHelper::dump() 91 : { 92 2 : if (fpMessageProvider != nullptr) 93 : { 94 1 : fpMessageProvider->dump(); 95 : } 96 2 : } 97 : 98 : } // namespace transport