2022-01-20 18:27:56 +00:00
|
|
|
// This file Copyright © 2007-2022 Mnemosyne LLC.
|
|
|
|
// It may be used under GPLv2 (SPDX: GPL-2.0), GPLv3 (SPDX: GPL-3.0),
|
|
|
|
// or any future license endorsed by Mnemosyne LLC.
|
|
|
|
// License text can be found in the licenses/ folder.
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2017-11-14 20:21:28 +00:00
|
|
|
#pragma once
|
|
|
|
|
2008-11-24 20:17:36 +00:00
|
|
|
#ifndef __TRANSMISSION__
|
2017-04-19 12:04:45 +00:00
|
|
|
#error only libtransmission should #include this header.
|
2008-11-24 20:17:36 +00:00
|
|
|
#endif
|
|
|
|
|
2021-12-15 21:25:42 +00:00
|
|
|
#include <cinttypes>
|
2021-12-16 09:43:51 +00:00
|
|
|
#include <cstddef>
|
2021-12-15 21:25:42 +00:00
|
|
|
#include <ctime>
|
|
|
|
|
2008-06-07 21:26:41 +00:00
|
|
|
#include "peer-common.h"
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
class tr_peer;
|
2021-10-11 21:54:16 +00:00
|
|
|
class tr_peerIo;
|
2011-03-25 06:20:12 +00:00
|
|
|
struct tr_address;
|
|
|
|
struct tr_torrent;
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2009-05-29 19:17:12 +00:00
|
|
|
/**
|
|
|
|
* @addtogroup peers Peers
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
class tr_peerMsgs : public tr_peer
|
|
|
|
{
|
|
|
|
public:
|
2022-02-01 17:30:51 +00:00
|
|
|
tr_peerMsgs(tr_torrent* torrent, peer_atom* atom_in)
|
2021-10-07 13:33:55 +00:00
|
|
|
: tr_peer{ torrent, atom_in }
|
|
|
|
{
|
|
|
|
}
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
virtual ~tr_peerMsgs() override = default;
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
virtual bool is_peer_choked() const = 0;
|
|
|
|
virtual bool is_peer_interested() const = 0;
|
|
|
|
virtual bool is_client_choked() const = 0;
|
|
|
|
virtual bool is_client_interested() const = 0;
|
2010-03-06 14:56:15 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
virtual bool is_utp_connection() const = 0;
|
|
|
|
virtual bool is_encrypted() const = 0;
|
|
|
|
virtual bool is_incoming_connection() const = 0;
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
virtual bool is_active(tr_direction direction) const = 0;
|
|
|
|
virtual void update_active(tr_direction direction) = 0;
|
2010-03-08 04:29:58 +00:00
|
|
|
|
2022-02-28 22:26:26 +00:00
|
|
|
virtual bool is_connection_older_than(time_t time) const = 0;
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
virtual void cancel_block_request(tr_block_index_t block) = 0;
|
2008-09-17 19:44:24 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
virtual void set_choke(bool peer_is_choked) = 0;
|
|
|
|
virtual void set_interested(bool client_is_interested) = 0;
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
virtual void pulse() = 0;
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
virtual void on_piece_completed(tr_piece_index_t) = 0;
|
|
|
|
};
|
2013-05-27 21:04:48 +00:00
|
|
|
|
2021-10-07 13:33:55 +00:00
|
|
|
tr_peerMsgs* tr_peerMsgsNew(
|
|
|
|
tr_torrent* torrent,
|
|
|
|
peer_atom* atom,
|
|
|
|
tr_peerIo* io,
|
|
|
|
tr_peer_callback callback,
|
|
|
|
void* callback_data);
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
size_t tr_generateAllowedSet(
|
|
|
|
tr_piece_index_t* setmePieces,
|
|
|
|
size_t desiredSetSize,
|
|
|
|
size_t pieceCount,
|
|
|
|
uint8_t const* infohash,
|
2017-04-20 16:02:19 +00:00
|
|
|
struct tr_address const* addr);
|
2007-09-20 16:32:01 +00:00
|
|
|
|
2009-05-29 19:17:12 +00:00
|
|
|
/* @} */
|