Go to the documentation of this file.
52 [[nodiscard]]
virtual std::vector<uint8_t> encode()
const;
60 const TorrentFile& torrent,
const std::vector<uint8_t>& buf);
68 [[nodiscard]]
virtual uint8_t message_id()
const = 0;
71 [[nodiscard]]
virtual std::vector<uint8_t> encode_payload()
const = 0;
82 [[nodiscard]] std::vector<uint8_t>
encode()
const override {
87 return MessageKind::KeepAlive;
93 [[nodiscard]] uint8_t message_id()
const override {
return 0; }
96 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override {
109 [[nodiscard]] uint8_t message_id()
const override {
return 0; }
110 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override {
120 return MessageKind::Unchoke;
124 [[nodiscard]] uint8_t message_id()
const override {
return 1; }
125 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override {
135 return MessageKind::Interested;
139 [[nodiscard]] uint8_t message_id()
const override {
return 2; }
140 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override {
151 return MessageKind::NotInterested;
155 [[nodiscard]] uint8_t message_id()
const override {
return 3; }
156 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override {
171 const std::vector<uint8_t>& buf);
176 [[nodiscard]] uint8_t message_id()
const override {
return 4; }
177 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override;
190 [[nodiscard]]
static std::unique_ptr<BitfieldMessage> decode(
191 const TorrentFile& torrent,
const std::vector<uint8_t>& buf);
194 return MessageKind::Bitfield;
198 [[nodiscard]] uint8_t message_id()
const override {
return 5; }
199 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override;
214 : index{index}, begin{begin}, length{length} {}
217 decode(
const std::vector<uint8_t>& buf);
220 return MessageKind::Request;
224 [[nodiscard]] uint8_t message_id()
const override {
return 6; }
225 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override;
241 : index{index}, begin{begin}, block{std::move(block)} {}
244 decode(
const std::vector<uint8_t>& buf);
249 [[nodiscard]] uint8_t message_id()
const override {
return 7; }
250 [[nodiscard]] std::vector<uint8_t> encode_payload()
const override;
MessageKind
Definition: message.hpp:16
const int64_t index
Index of the newly acquired piece.
Definition: message.hpp:166
MessageKind kind() const override
Definition: message.hpp:119
Definition: message.hpp:132
MessageKind kind() const override
Definition: message.hpp:134
Definition: bitfield.hpp:24
const int64_t index
Index of the piece.
Definition: message.hpp:207
RequestMessage(int64_t index, int64_t begin, int64_t length)
Definition: message.hpp:213
Definition: message.hpp:117
Used to handle errors without using exceptions.
Definition: result.hpp:18
const std::vector< uint8_t > block
The actual bytes from the piece.
Definition: message.hpp:238
MessageKind kind() const override
Definition: message.hpp:219
Definition: message.hpp:78
std::vector< uint8_t > encode() const override
Definition: message.hpp:82
std::string display_decode_error(const DecodeError &err)
Definition: message.cpp:10
DecodeError
Definition: message.hpp:28
const Bitfield bitfield
Bitfield representing the pieces available.
Definition: message.hpp:186
MessageKind kind() const override
Definition: message.hpp:86
BitfieldMessage(Bitfield bitfield)
Definition: message.hpp:188
@ UnknownMessageID
Not a known message type.
Definition: message.hpp:163
const int64_t begin
Offset from the beginning of the piece.
Definition: message.hpp:209
Definition: message.hpp:231
HaveMessage(int64_t index)
Definition: message.hpp:168
Represents a parsed .torrent file.
Definition: torrent.hpp:32
const int64_t length
How many bytes we're asking. Typically 16KB.
Definition: message.hpp:211
Definition: message.hpp:183
MessageKind kind() const override
Definition: message.hpp:193
MessageKind kind() const override
Definition: message.hpp:150
Definition: message.hpp:46
MessageKind kind() const override
Definition: message.hpp:106
@ UnexpectedPayload
Message has payload but didn't expect any.
Definition: message.cpp:9
const int64_t index
Index of the piece.
Definition: message.hpp:234
Definition: message.hpp:148
MessageKind kind() const override
Definition: message.hpp:246
Definition: torrent.hpp:75
Definition: result.hpp:12
Definition: bitfield.cpp:24
MessageKind kind() const override
Definition: message.hpp:173
Definition: message.hpp:204
PieceMessage(int64_t index, int64_t begin, std::vector< uint8_t > block)
Definition: message.hpp:240
const int64_t begin
Offset from the beginning of the piece.
Definition: message.hpp:236
Definition: message.hpp:104