source: trunk/libtransmission/peer-mgr-private.h @ 7357

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

(libT) add some documentation about the three separate peer structs and how they are related.

  • 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 7357 2008-12-11 17:02:34Z 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#endif
25
26#include "publish.h" /* tr_publisher_tag */
27
28struct tr_bandwidth;
29struct tr_bitfield;
30struct tr_peerIo;
31struct tr_peermsgs;
32
33enum
34{
35    ENCRYPTION_PREFERENCE_UNKNOWN,
36    ENCRYPTION_PREFERENCE_YES,
37    ENCRYPTION_PREFERENCE_NO
38};
39
40/**
41 * State information about a connected peer.
42 *
43 * @see struct peer_atom
44 * @see tr_peermsgs
45 */
46typedef struct tr_peer
47{
48    tr_bool                  peerIsChoked;
49    tr_bool                  peerIsInterested;
50    tr_bool                  clientIsChoked;
51    tr_bool                  clientIsInterested;
52    tr_bool                  doPurge;
53
54    /* number of bad pieces they've contributed to */
55    uint8_t                  strikes;
56
57    uint8_t                  encryption_preference;
58    tr_port                  port;
59    tr_address               addr;
60    struct tr_peerIo       * io;
61
62    struct tr_bitfield     * blame;
63    struct tr_bitfield     * have;
64
65    /** how complete the peer's copy of the torrent is. [0.0...1.0] */
66    float                    progress;
67
68    /* the client name from the `v' string in LTEP's handshake dictionary */
69    char                   * client;
70
71    time_t                   chokeChangedAt;
72
73    struct tr_peermsgs     * msgs;
74    tr_publisher_tag         msgsTag;
75
76    struct tr_bandwidth    * bandwidth;
77}
78tr_peer;
79
80double tr_peerGetPieceSpeed( const tr_peer    * peer,
81                             tr_direction       direction );
82
83#endif
Note: See TracBrowser for help on using the repository browser.