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 157 : AbstractTransportLayer::AbstractTransportLayer(uint8_t const busId)
15 157 : : fBusId(busId), fProvidingListenerHelper(busId)
16 157 : {}
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 157 : AbstractTransportLayer::TransportMessageProvidingListenerHelper::
31 157 : TransportMessageProvidingListenerHelper(uint8_t const busId)
32 157 : : fpMessageProvider(nullptr), fpMessageListener(nullptr), fBusId(busId)
33 157 : {}
34 :
35 : // virtual
36 : ITransportMessageProvidingListener::ErrorCode
37 11 : AbstractTransportLayer::TransportMessageProvidingListenerHelper::getTransportMessage(
38 : uint8_t const srcBusId,
39 : uint16_t const sourceAddress,
40 : uint16_t const targetAddress,
41 : uint16_t const size,
42 : ::etl::span<uint8_t const> const& peek,
43 : TransportMessage*& pTransportMessage)
44 : {
45 11 : if (fpMessageProvider != nullptr)
46 : {
47 10 : return fpMessageProvider->getTransportMessage(
48 10 : srcBusId, sourceAddress, targetAddress, 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 22 : void AbstractTransportLayer::TransportMessageProvidingListenerHelper::releaseTransportMessage(
61 : TransportMessage& transportMessage)
62 : {
63 22 : if (fpMessageProvider != nullptr)
64 : {
65 16 : fpMessageProvider->releaseTransportMessage(transportMessage);
66 : }
67 22 : }
68 :
69 : // virtual
70 : ITransportMessageListener::ReceiveResult
71 15 : AbstractTransportLayer::TransportMessageProvidingListenerHelper::messageReceived(
72 : uint8_t const sourceBusId,
73 : TransportMessage& transportMessage,
74 : ITransportMessageProcessedListener* const pNotificationListener)
75 : {
76 15 : if (fpMessageListener != nullptr)
77 : {
78 14 : return fpMessageListener->messageReceived(
79 14 : sourceBusId, transportMessage, pNotificationListener);
80 : }
81 1 : 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
|