16 #include <nn/pia/transport/transport_Definitions.h>
18 #include <nn/pia/common/common_ListNode.h>
19 #include <nn/pia/transport/transport_ProtocolId.h>
20 #include <nn/pia/transport/transport_ProtocolEvent.h>
22 #define PIA_STATISTIC_PROTOCOL_BLOCK_TIME_ENABLE 0
23 #if PIA_STATISTIC_PROTOCOL_BLOCK_TIME_ENABLE
24 #include <nn/pia/common/private/common_Statistic.h>
25 #include <nn/pia/common/common_TimeSpan.h>
41 class StationPacketHandler;
68 void SetPacketHandler(PacketHandler* pPacketHandler)
70 m_pPacketHandler = pPacketHandler;
80 virtual void Trace(uint64_t flag)
const;
89 static uint32_t GetListNodeOffset()
91 NN_PIA_PRAGMA_PUSH_WARNINGS
92 NN_PIA_DISABLE_WARNING_CLANG_INVALID_OFFSETOF
93 return offsetof(
Protocol, m_ListNode);
94 NN_PIA_PRAGMA_POP_WARNINGS
105 void SetPort(uint16_t port);
115 ProtocolId GetProtocolId()
const
128 virtual uint16_t GetProtocolType()
const = 0;
158 virtual void CleanupWithStationAddress();
166 virtual void Cleanup();
176 virtual Result Dispatch();
188 virtual Result UpdateProtocolEvent(
const ProtocolEvent& event);
192 #if PIA_STATISTIC_PROTOCOL_BLOCK_TIME_ENABLE
193 Statistic<TimeSpan>* GetBlockTimeStatistic()
195 return &m_BlockTimeStatistic;
208 virtual bool IsProtocolFilteringEnabled()
const;
218 PacketHandler* GetPacketHandler()
220 return m_pPacketHandler;
231 const PacketHandler* GetPacketHandler()
const
233 return m_pPacketHandler;
237 StationPacketHandler* GetStationPacketHandler();
238 const StationPacketHandler* GetStationPacketHandler()
const;
241 common::ListNode m_ListNode;
242 ProtocolId m_ProtocolId;
243 PacketHandler* m_pPacketHandler;
245 #if PIA_STATISTIC_PROTOCOL_BLOCK_TIME_ENABLE
246 Statistic<TimeSpan> m_BlockTimeStatistic;
254 #define PIA_PROTOCOL_TYPE_INFO(protocolType) \
255 static uint16_t GetProtocolTypeStatic() \
257 return protocolType; \
259 virtual uint16_t GetProtocolType() const \
261 return GetProtocolTypeStatic(); \