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

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

mingw portability fixes

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