16 #include <nn/pia/transport/transport_Definitions.h>
18 #include <nn/pia/common/common_OffsetList.h>
19 #include <nn/pia/transport/transport_ProtocolId.h>
20 #include <nn/pia/transport/transport_ProtocolEvent.h>
21 #include <nn/pia/transport/transport_Protocol.h>
38 class ProtocolManager :
public common::RootObject
44 ProtocolManager(
void);
50 virtual ~ProtocolManager(
void);
57 Result
Initialize(NetworkFactory* pNetworkFactory);
75 uint32_t CreateProtocol(uint16_t port = 0)
82 transport::Protocol* pProtocol =
new (AllocProtocol(
sizeof(T))) T();
83 transport::ProtocolId id(T::GetProtocolTypeStatic(), port);
84 return CreateProtocolImpl(pProtocol,
id);
93 void DestroyProtocol(uint32_t protocolHandle);
103 template <
typename T>
104 T* GetProtocol(uint32_t protocolHandle)
106 return static_cast<T*
>(SearchProtocol(ProtocolId(protocolHandle), T::GetProtocolTypeStatic()));
118 Result Startup(PacketHandler* pPacketHandler);
138 Result StartupProtocolsWithStationAddress(
const common::StationAddress& localStationAddress);
148 Result StartupProtocols();
156 void CleanupProtocolsWithStationAddress();
164 void CleanupProtocols();
186 Result UpdateProtocolEvent(
const ProtocolEvent& event);
195 virtual void Trace(uint64_t flag)
const;
197 #if PIA_STATISTIC_PROTOCOL_BLOCK_TIME_ENABLE
198 void ResetProtocolStatistic();
199 void PrintProtocolStatistic(uint32_t printMaxDataNum);
203 void* AllocProtocol(uint32_t size);
205 uint32_t CreateProtocolImpl(Protocol* pProtocol, ProtocolId
id);
207 Protocol* SearchProtocol(ProtocolId protocolId, uint16_t protocolType);
210 typedef common::OffsetList<Protocol> ProtocolList;
212 NetworkFactory* m_pNetworkFactory;
214 ProtocolList m_ProtocolList;
218 ProtocolManager(
const ProtocolManager&);
219 ProtocolManager& operator=(
const ProtocolManager&);