TARAXA
Loading...
Searching...
No Matches
packets_handler.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <unordered_map>
5
7
9
14 public:
23 const std::shared_ptr<BasePacketHandler>& getSpecificHandler(SubprotocolPacketType packet_type) const;
24
32 template <typename PacketHandlerType, typename... Args>
33 void registerHandler(Args&&... args);
34
35 private:
36 // Map of all packets handlers, factory method selects specific packet handler for processing based on packet type
37 std::unordered_map<SubprotocolPacketType, std::shared_ptr<BasePacketHandler>> packets_handlers_;
38};
39
40template <typename PacketHandlerType, typename... Args>
41void PacketsHandler::registerHandler(Args&&... args) {
42 assert(packets_handlers_.find(PacketHandlerType::kPacketType_) == packets_handlers_.end());
43 packets_handlers_.emplace(PacketHandlerType::kPacketType_,
44 std::make_shared<PacketHandlerType>(std::forward<Args>(args)...));
45}
46
47} // namespace taraxa::network::tarcap
Generic PacketsHandler that contains all specific packet handlers.
Definition packets_handler.hpp:13
std::unordered_map< SubprotocolPacketType, std::shared_ptr< BasePacketHandler > > packets_handlers_
Definition packets_handler.hpp:37
const std::shared_ptr< BasePacketHandler > & getSpecificHandler(SubprotocolPacketType packet_type) const
Factory method for getting specific packet handler based on packet type.
Definition packets_handler.cpp:5
void registerHandler(Args &&... args)
Registers packet handler.
Definition packets_handler.hpp:41
Definition vote_manager.hpp:24
SubprotocolPacketType
SubprotocolPacketType is used in networking layer to differentiate packet types.
Definition packet_types.hpp:12