TARAXA
Loading...
Searching...
No Matches
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
8namespace taraxa {
9
10class 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),
30 dev::p2p::DisconnectReason::BadProtocol) {}
31};
32
37 public:
38 MaliciousPeerException(const std::string &msg, std::optional<dev::p2p::NodeID> peer = {})
39 : PacketProcessingException("MaliciousPeer " + (peer ? peer->abridged() : "") + ": " + msg,
40 dev::p2p::DisconnectReason::UserReason),
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:73
Definition Address.h:13
std::hash for asio::adress
Definition FixedHash.h:483
Definition app.hpp:16