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

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

updated email address

  • Property svn:keywords set to Date Rev Author Id
File size: 4.7 KB
Line 
1/*
2 * This file Copyright (C) 2007-2008 Charles Kerr <charles@transmissionbt.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 7404 2008-12-16 00:20:44Z charles $
11 */
12
13#ifndef __TRANSMISSION__
14#error only libtransmission should #include this header.
15#endif
16
17#ifndef TR_PEER_MGR_H
18#define TR_PEER_MGR_H
19
20#include <inttypes.h> /* uint16_t */
21
22#ifdef WIN32
23 #include <winsock2.h> /* struct in_addr */
24#endif
25
26#include "net.h"
27
28struct tr_peer_stat;
29struct tr_torrent;
30typedef struct tr_peerMgr tr_peerMgr;
31
32enum
33{
34    /* corresponds to ut_pex's added.f flags */
35    ADDED_F_ENCRYPTION_FLAG = 1,
36
37    /* corresponds to ut_pex's added.f flags */
38    ADDED_F_SEED_FLAG = 2,
39};
40
41typedef struct tr_pex
42{
43    tr_address addr;
44    tr_port    port;
45    uint8_t    flags;
46}
47tr_pex;
48
49int tr_pexCompare( const void * a, const void * b );
50
51tr_peerMgr* tr_peerMgrNew( tr_session * );
52
53void tr_peerMgrFree( tr_peerMgr * manager );
54
55tr_bool tr_peerMgrPeerIsSeed( const tr_peerMgr  * mgr,
56                              const uint8_t     * torrentHash,
57                              const tr_address  * addr );
58
59void tr_peerMgrAddIncoming( tr_peerMgr  * manager,
60                            tr_address  * addr,
61                            tr_port       port,
62                            int           socket );
63
64tr_pex * tr_peerMgrCompactToPex( const void    * compact,
65                                 size_t          compactLen,
66                                 const uint8_t * added_f,
67                                 size_t          added_f_len,
68                                 size_t        * setme_pex_count );
69
70tr_pex * tr_peerMgrCompact6ToPex( const void    * compact,
71                                  size_t          compactLen,
72                                  const uint8_t * added_f,
73                                  size_t          added_f_len,
74                                  size_t        * pexCount );
75
76tr_pex * tr_peerMgrArrayToPex( const void * array,
77                               size_t       arrayLen,
78                               size_t      * setme_pex_count );
79
80void tr_peerMgrAddPex( tr_peerMgr     * manager,
81                       const uint8_t  * torrentHash,
82                       uint8_t          from,
83                       const tr_pex   * pex );
84
85void tr_peerMgrSetBlame( tr_peerMgr        * manager,
86                         const uint8_t     * torrentHash,
87                         tr_piece_index_t    pieceIndex,
88                         int                 success );
89
90int  tr_peerMgrGetPeers( tr_peerMgr      * manager,
91                         const uint8_t   * torrentHash,
92                         tr_pex         ** setme_pex,
93                         uint8_t           af);
94
95void tr_peerMgrStartTorrent( tr_peerMgr     * manager,
96                             const uint8_t  * torrentHash );
97
98void tr_peerMgrStopTorrent( tr_peerMgr      * manager,
99                             const uint8_t  * torrentHash );
100
101void tr_peerMgrAddTorrent( tr_peerMgr         * manager,
102                           struct tr_torrent  * tor );
103
104void tr_peerMgrRemoveTorrent( tr_peerMgr     * manager,
105                              const uint8_t  * torrentHash );
106
107void tr_peerMgrTorrentAvailability( const tr_peerMgr * manager,
108                                    const uint8_t    * torrentHash,
109                                    int8_t           * tab,
110                                    unsigned int       tabCount );
111
112struct tr_bitfield* tr_peerMgrGetAvailable( const tr_peerMgr * manager,
113                                            const uint8_t    * torrentHash );
114
115int tr_peerMgrHasConnections( const tr_peerMgr * manager,
116                              const uint8_t    * torrentHash );
117
118void tr_peerMgrTorrentStats( const tr_peerMgr * manager,
119                             const uint8_t * torrentHash,
120                             int * setmePeersKnown,
121                             int * setmePeersConnected,
122                             int * setmeSeedsConnected,
123                             int * setmeWebseedsSendingToUs,
124                             int * setmePeersSendingToUs,
125                             int * setmePeersGettingFromUs,
126                             int * setmePeersFrom ); /* TR_PEER_FROM__MAX */
127
128struct tr_peer_stat* tr_peerMgrPeerStats( const tr_peerMgr  * manager,
129                                          const uint8_t     * torrentHash,
130                                          int               * setmeCount );
131
132float* tr_peerMgrWebSpeeds( const tr_peerMgr  * manager,
133                            const uint8_t     * torrentHash );
134
135
136#endif
Note: See TracBrowser for help on using the repository browser.