Furrent
Public Member Functions | Static Public Member Functions | List of all members
fur::download::message::Message Class Referenceabstract

#include <message.hpp>

Inheritance diagram for fur::download::message::Message:
Inheritance graph
[legend]

Public Member Functions

virtual ~Message ()=default
 
virtual std::vector< uint8_t > encode () const
 
virtual MessageKind kind () const =0
 

Static Public Member Functions

static Result< std::unique_ptr< Message >, DecodeErrordecode (const TorrentFile &torrent, const std::vector< uint8_t > &buf)
 

Detailed Description

Virtual class for messages exchanged between BitTorrent clients. They are all shaped like: <length><id><payload>

Constructor & Destructor Documentation

◆ ~Message()

virtual fur::download::message::Message::~Message ( )
virtualdefault

Member Function Documentation

◆ decode()

Result< std::unique_ptr< Message >, DecodeError > fur::download::message::Message::decode ( const TorrentFile torrent,
const std::vector< uint8_t > &  buf 
)
static

Try decoding a finite sequence of bytes into a Message. A return value std::nullopt indicates failure and receding communication with the peer is advised to avoid invalid state. The TorrentFile is currently only required because BitfieldMessage needs to know the piece count to decode itself nicely.

◆ encode()

std::vector< uint8_t > fur::download::message::Message::encode ( ) const
virtual

Encode this message to wire format. This is virtual because KeepAliveMessage uses a slightly different encoding that all other messages. That's the only subclass overriding encode.

Reimplemented in fur::download::message::KeepAliveMessage.

◆ kind()

virtual MessageKind fur::download::message::Message::kind ( ) const
pure virtual

The documentation for this class was generated from the following files: