Line data Source code
1 : // Copyright 2024 Accenture. 2 : 3 : #pragma once 4 : 5 : #include "can/framemgmt/ICANFrameListener.h" 6 : 7 : #include <estd/assert.h> 8 : 9 : namespace can 10 : { 11 : class IFilter; 12 : 13 : template<typename T> 14 : class CANFrameListenerProxy : public T 15 : { 16 : public: 17 1 : CANFrameListenerProxy() : _listener(nullptr) {} 18 : 19 1 : explicit CANFrameListenerProxy(ICANFrameListener& listener) : _listener(&listener) {} 20 : 21 1 : void setCANFrameListener(ICANFrameListener& listener) { _listener = &listener; } 22 : 23 1 : IFilter& getFilter() { return T::getFilter(); } 24 : 25 3 : void frameReceived(CANFrame const& canFrame) 26 : { 27 3 : if (_listener != nullptr) 28 : { 29 2 : _listener->frameReceived(canFrame); 30 : } 31 3 : } 32 : 33 : private: 34 : ICANFrameListener* _listener; 35 : }; 36 : 37 : } // namespace can