TARAXA
exceptions.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdexcept>
4 #include <string>
5 
6 #include "libp2p/Common.h"
7 
8 namespace taraxa {
9 
10 class PacketProcessingException : public std::runtime_error {
11  public:
12  PacketProcessingException(const std::string &msg, dev::p2p::DisconnectReason disconnect_reason)
13  : runtime_error("PacketProcessingException -> " + msg), disconnect_reason_(disconnect_reason) {}
14 
16 
17  private:
19 };
20 
26  public:
27  InvalidRlpItemsCountException(const std::string &packet_type_str, size_t actual_size, size_t expected_size)
28  : PacketProcessingException(packet_type_str + " RLP items count(" + std::to_string(actual_size) +
29  "), expected size is " + std::to_string(expected_size),
31 };
32 
37  public:
38  MaliciousPeerException(const std::string &msg, std::optional<dev::p2p::NodeID> peer = {})
39  : PacketProcessingException("MaliciousPeer " + (peer ? peer->abridged() : "") + ": " + msg,
41  peer_(std::move(peer)) {}
42 
46  std::optional<dev::p2p::NodeID> getPeer() const { return peer_; }
47 
48  private:
49  // Peer that should be disconnected - sometimes we want to disconnect data author, not packet sender
50  std::optional<dev::p2p::NodeID> peer_;
51 };
52 
53 } // namespace taraxa
Exception thrown in case basic rlp format validation fails - number of rlp items.
Definition: exceptions.hpp:25
InvalidRlpItemsCountException(const std::string &packet_type_str, size_t actual_size, size_t expected_size)
Definition: exceptions.hpp:27
Exception thrown in case peer seems malicious based on data he sent.
Definition: exceptions.hpp:36
std::optional< dev::p2p::NodeID > getPeer() const
Definition: exceptions.hpp:46
std::optional< dev::p2p::NodeID > peer_
Definition: exceptions.hpp:50
MaliciousPeerException(const std::string &msg, std::optional< dev::p2p::NodeID > peer={})
Definition: exceptions.hpp:38
Definition: exceptions.hpp:10
PacketProcessingException(const std::string &msg, dev::p2p::DisconnectReason disconnect_reason)
Definition: exceptions.hpp:12
dev::p2p::DisconnectReason getDisconnectReason() const
Definition: exceptions.hpp:15
const dev::p2p::DisconnectReason disconnect_reason_
Definition: exceptions.hpp:18
DisconnectReason
Definition: Common.h:85
@ UserReason
Definition: Common.h:98
@ BadProtocol
Definition: Common.h:88
Definition: Address.h:13
std::hash for asio::adress
Definition: FixedHash.h:483
std::string to_string(Json::Value const &json, bool no_indent=true)
Definition: jsoncpp.cpp:27
Definition: config.hpp:8