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

Last change on this file since 5632 was 5632, checked in by charles, 14 years ago

(1) fix choke/unchoke error. (2) if a peer keeps trying to reconnect to us, hang up during the handshake.

  • Property svn:keywords set to Date Rev Author Id
File size: 4.1 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 5632 2008-04-17 03:48:56Z 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
30typedef struct tr_pex
31{
32    struct in_addr in_addr;
33    uint16_t port;
34    uint8_t flags;
35}
36tr_pex;
37
38int tr_pexCompare( const void * a, const void * b );
39
40tr_peerMgr* tr_peerMgrNew( struct tr_handle * );
41
42void tr_peerMgrFree( tr_peerMgr * manager );
43
44int tr_peerMgrPeerIsSeed( const tr_peerMgr      * mgr,
45                          const uint8_t         * torrentHash,
46                          const struct in_addr  * addr );
47
48void tr_peerMgrAddIncoming( tr_peerMgr      * manager,
49                            struct in_addr  * addr,
50                            uint16_t          port,
51                            int               socket );
52
53void tr_peerMgrAddPeers( tr_peerMgr     * manager,
54                         const uint8_t  * torrentHash,
55                         uint8_t          from,
56                         const uint8_t  * peerCompact,
57                         int              peerCount );
58
59void tr_peerMgrAddPex( tr_peerMgr     * manager,
60                       const uint8_t  * torrentHash,
61                       uint8_t          from,
62                       const tr_pex   * pex );
63
64void tr_peerMgrSetBlame( tr_peerMgr     * manager,
65                         const uint8_t  * torrentHash,
66                         int              pieceIndex,
67                         int              success );
68
69int tr_peerMgrGetPeers( tr_peerMgr      * manager,
70                        const uint8_t   * torrentHash,
71                        tr_pex         ** setme_pex );
72
73void tr_peerMgrStartTorrent( tr_peerMgr     * manager,
74                             const uint8_t  * torrentHash );
75
76void tr_peerMgrStopTorrent( tr_peerMgr     * manager,
77                            const uint8_t  * torrentHash );
78
79void tr_peerMgrAddTorrent( tr_peerMgr         * manager,
80                           struct tr_torrent  * tor );
81
82void tr_peerMgrRemoveTorrent( tr_peerMgr     * manager,
83                               const uint8_t  * torrentHash );
84
85void tr_peerMgrTorrentAvailability( const tr_peerMgr * manager,
86                                    const uint8_t    * torrentHash,
87                                    int8_t           * tab,
88                                    int                tabCount );
89
90struct tr_bitfield* tr_peerMgrGetAvailable( const tr_peerMgr * manager,
91                                            const uint8_t    * torrentHash );
92
93int tr_peerMgrHasConnections( const tr_peerMgr * manager,
94                              const uint8_t    * torrentHash );
95
96void tr_peerMgrTorrentStats( const tr_peerMgr * manager,
97                             const uint8_t    * torrentHash,
98                             int              * setmePeersKnown,
99                             int              * setmePeersConnected,
100                             int              * setmePeersSendingToUs,
101                             int              * setmePeersGettingFromUs,
102                             int              * setmePeersFrom ); /* <-- array of TR_PEER_FROM__MAX */
103
104struct tr_peer_stat * tr_peerMgrPeerStats( const tr_peerMgr  * manager,
105                                           const uint8_t     * torrentHash,
106                                           int               * setmeCount );
107
108                             
109struct tr_bitfield *
110tr_peerMgrGenerateAllowedSet( const uint32_t         setCount,
111                              const uint32_t         pieceCount,
112                              const uint8_t          infohash[20],
113                              const struct in_addr * ip );
114
115
116
117#endif
Note: See TracBrowser for help on using the repository browser.