source: branches/1.4x/libtransmission/peer-mgr-private.h @ 7455

Last change on this file since 7455 was 7455, checked in by charles, 12 years ago

(1.4x libT) backport handshake, peer, bandwidth, peer-io to 1.4x.

  • Property svn:keywords set to Date Rev Author Id
File size: 2.0 KB
Line 
1/*
2 * This file Copyright (C) 2007-2008 Charles Kerr <charles@rebelbase.com>
3 *
4 * This file is licensed by the GPL version 2.  Works owned by the
5 * Transmission project are granted a special exemption to clause 2(b)
6 * so that the bulk of its code can remain under the MIT license.
7 * This exemption does not extend to derived works not owned by
8 * the Transmission project.
9 *
10 * $Id: peer-mgr-private.h 7455 2008-12-22 00:51:14Z charles $
11 */
12
13#ifndef __TRANSMISSION__
14#error only libtransmission should #include this header.
15#endif
16
17#ifndef TR_PEER_MGR_PRIVATE_H
18#define TR_PEER_MGR_PRIVATE_H
19
20#include <inttypes.h> /* uint16_t */
21
22#ifdef WIN32
23 #include <winsock2.h> /* struct in_addr */
24#else
25 #include <netinet/in.h> /* struct in_addr */
26#endif
27
28#include "publish.h" /* tr_publisher_tag */
29
30struct tr_bandwidth;
31struct tr_bitfield;
32struct tr_peerIo;
33struct tr_peermsgs;
34
35enum
36{
37    ENCRYPTION_PREFERENCE_UNKNOWN,
38    ENCRYPTION_PREFERENCE_YES,
39    ENCRYPTION_PREFERENCE_NO
40};
41
42typedef struct tr_peer
43{
44    tr_bool                  peerIsChoked;
45    tr_bool                  peerIsInterested;
46    tr_bool                  clientIsChoked;
47    tr_bool                  clientIsInterested;
48    tr_bool                  doPurge;
49
50    /* number of bad pieces they've contributed to */
51    uint8_t                  strikes;
52
53    uint8_t                  encryption_preference;
54    uint16_t                 port;
55    struct in_addr           addr;
56    struct tr_peerIo       * io;
57
58    struct tr_bitfield     * blame;
59    struct tr_bitfield     * have;
60
61    /** how complete the peer's copy of the torrent is. [0.0...1.0] */
62    float                    progress;
63
64    /* the client name from the `v' string in LTEP's handshake dictionary */
65    char                   * client;
66
67    time_t                   chokeChangedAt;
68
69    struct tr_peermsgs     * msgs;
70    tr_publisher_tag         msgsTag;
71
72    struct tr_bandwidth    * bandwidth;
73}
74tr_peer;
75
76double tr_peerGetPieceSpeed( const tr_peer    * peer,
77                             tr_direction       direction );
78
79#endif
Note: See TracBrowser for help on using the repository browser.