source: trunk/libtransmission/peer-mgr.h @ 6795

Last change on this file since 6795 was 6795, checked in by charles, 13 years ago

run libT, cli, daemon, gtk through the source-code formatter "uncrustify" as promised/threatened

  • Property svn:keywords set to Date Rev Author Id
File size: 5.2 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.h 6795 2008-09-23 19:11:04Z charles $
11 */
12
13#ifndef TR_PEER_MGR_H
14#define TR_PEER_MGR_H
15
16#include <inttypes.h> /* uint16_t */
17
18#ifdef WIN32
19 #include <winsock2.h> /* struct in_addr */
20#else
21 #include <netinet/in.h> /* struct in_addr */
22#endif
23
24struct in_addr;
25struct tr_handle;
26struct tr_peer_stat;
27struct tr_torrent;
28typedef struct tr_peerMgr tr_peerMgr;
29
30enum
31{
32    /* corresponds to ut_pex's added.f flags */
33    ADDED_F_ENCRYPTION_FLAG = 1,
34
35    /* corresponds to ut_pex's added.f flags */
36    ADDED_F_SEED_FLAG = 2,
37};
38
39typedef struct tr_pex
40{
41    struct in_addr in_addr;
42    uint16_t    port;
43    uint8_t     flags;
44}
45tr_pex;
46
47int                 tr_pexCompare( const void * a,
48                                   const void * b );
49
50tr_peerMgr*         tr_peerMgrNew( struct tr_handle * );
51
52void                tr_peerMgrFree( tr_peerMgr * manager );
53
54int                 tr_peerMgrPeerIsSeed(
55    const tr_peerMgr *     mgr,
56    const uint8_t *
57                           torrentHash,
58    const struct in_addr * addr );
59
60void                tr_peerMgrAddIncoming( tr_peerMgr *     manager,
61                                           struct in_addr * addr,
62                                           uint16_t         port,
63                                           int              socket );
64
65tr_pex *            tr_peerMgrCompactToPex( const void *    compact,
66                                            size_t          compactLen,
67                                            const uint8_t * added_f,
68                                            size_t          added_f_len,
69                                            size_t *        setme_pex_count );
70
71void                tr_peerMgrAddPex( tr_peerMgr *    manager,
72                                      const uint8_t * torrentHash,
73                                      uint8_t         from,
74                                      const tr_pex *  pex );
75
76void                tr_peerMgrSetBlame( tr_peerMgr *     manager,
77                                        const uint8_t *  torrentHash,
78                                        tr_piece_index_t pieceIndex,
79                                        int              success );
80
81int                 tr_peerMgrGetPeers( tr_peerMgr *    manager,
82                                        const uint8_t * torrentHash,
83                                        tr_pex **       setme_pex );
84
85void                tr_peerMgrStartTorrent( tr_peerMgr *    manager,
86                                            const uint8_t * torrentHash );
87
88void                tr_peerMgrStopTorrent( tr_peerMgr *    manager,
89                                           const uint8_t * torrentHash );
90
91void                tr_peerMgrAddTorrent( tr_peerMgr *        manager,
92                                          struct tr_torrent * tor );
93
94void                tr_peerMgrRemoveTorrent( tr_peerMgr *    manager,
95                                             const uint8_t * torrentHash );
96
97void                tr_peerMgrTorrentAvailability(
98    const tr_peerMgr * manager,
99    const uint8_t *
100                       torrentHash,
101    int8_t *           tab,
102    unsigned int
103                       tabCount );
104
105struct tr_bitfield* tr_peerMgrGetAvailable( const tr_peerMgr * manager,
106                                            const uint8_t    * torrentHash );
107
108int                 tr_peerMgrHasConnections(
109    const tr_peerMgr * manager,
110    const uint8_t *
111                       torrentHash );
112
113void                tr_peerMgrTorrentStats(
114    const tr_peerMgr * manager,
115    const uint8_t *    torrentHash,
116    int *
117                       setmePeersKnown,
118    int *
119                       setmePeersConnected,
120    int *
121                       setmeSeedsConnected,
122    int *
123                       setmeWebseedsSendingToUs,
124    int *
125                       setmePeersSendingToUs,
126    int *
127                       setmePeersGettingFromUs,
128    int *
129                       setmePeersFrom,                          /* <-- array of
130                                                                  TR_PEER_FROM__MAX
131                                                                  */
132    double *
133                       setmeRateToClient,
134    double *
135                       setmeRateToPeers );
136
137double                tr_peerMgrGetRate( const tr_peerMgr * manager,
138                                         tr_direction       direction );
139
140struct tr_peer_stat * tr_peerMgrPeerStats( const tr_peerMgr  * manager,
141                                           const uint8_t     * torrentHash,
142                                           int * setmeCount );
143
144float*                tr_peerMgrWebSpeeds( const tr_peerMgr * manager,
145                                           const uint8_t *    torrentHash );
146
147
148struct tr_bitfield *  tr_peerMgrGenerateAllowedSet(
149    const uint32_t setCount,
150    const uint32_t
151                   pieceCount,
152    const uint8_t
153                   infohash[20],
154    const struct in_addr *
155                   ip );
156
157
158#endif
Note: See TracBrowser for help on using the repository browser.