source: trunk/libtransmission/session.h @ 7154

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

(libT) yet another stab at getting bandwidth management under control. this version may suck less than previous attempts. It also breaks the mac build until someone adds iobuf.[ch] to xcode...

  • Property svn:keywords set to Date Rev Author Id
File size: 4.3 KB
Line 
1/******************************************************************************
2 * $Id: session.h 7154 2008-11-25 21:35:17Z charles $
3 *
4 * Copyright (c) 2005-2008 Transmission authors and contributors
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *****************************************************************************/
24
25#ifndef __TRANSMISSION__
26#error only libtransmission should #include this header.
27#endif
28
29#ifndef TR_INTERNAL_H
30#define TR_INTERNAL_H 1
31
32#define TR_NAME "Transmission"
33
34#ifndef UNUSED
35 #ifdef __GNUC__
36  #define UNUSED __attribute__ ( ( unused ) )
37 #else
38  #define UNUSED
39 #endif
40#endif
41
42
43typedef enum { TR_NET_OK, TR_NET_ERROR, TR_NET_WAIT } tr_tristate_t;
44
45uint8_t*       tr_peerIdNew( void );
46
47const uint8_t* tr_getPeerId( void );
48
49struct tr_metainfo_lookup
50{
51    char    hashString[2 * SHA_DIGEST_LENGTH + 1];
52    char *  filename;
53};
54
55struct tr_bandwidth;
56
57struct tr_handle
58{
59    unsigned int                 isPortSet          : 1;
60    unsigned int                 isPexEnabled       : 1;
61    unsigned int                 isBlocklistEnabled : 1;
62    unsigned int                 isProxyEnabled     : 1;
63    unsigned int                 isProxyAuthEnabled : 1;
64    unsigned int                 isClosed           : 1;
65    unsigned int                 useLazyBitfield    : 1;
66
67    tr_encryption_mode           encryptionMode;
68
69    struct tr_event_handle *     events;
70
71    int                          proxyPort;
72    int                          peerSocketTOS;
73
74    int                          torrentCount;
75    tr_torrent *                 torrentList;
76
77    char *                       tag;
78
79    char *                       configDir;
80    char *                       downloadDir;
81    char *                       resumeDir;
82    char *                       torrentDir;
83
84    tr_proxy_type                proxyType;
85    char *                       proxy;
86    char *                       proxyUsername;
87    char *                       proxyPassword;
88
89    struct tr_list *             blocklists;
90    struct tr_peerMgr *          peerMgr;
91    struct tr_shared *           shared;
92
93    struct tr_lock *             lock;
94
95    struct tr_web *              web;
96
97    struct tr_rpc_server *       rpcServer;
98    tr_rpc_func                  rpc_func;
99    void *                       rpc_func_user_data;
100
101    struct tr_stats_handle *     sessionStats;
102    struct tr_tracker_handle *   tracker;
103
104    struct tr_metainfo_lookup *  metainfoLookup;
105    int                          metainfoLookupCount;
106
107    /* the size of the output buffer for peer connections */
108    int so_sndbuf;
109
110    /* the size of the input buffer for peer connections */
111    int so_rcvbuf;
112
113    /* monitors the "global pool" speeds */
114    struct tr_bandwidth       * bandwidth;
115};
116
117const char * tr_sessionFindTorrentFile( const tr_session * session,
118                                        const char *       hashString );
119
120void         tr_sessionSetTorrentFile( tr_session * session,
121                                       const char * hashString,
122                                       const char * filename );
123
124struct in_addr;
125
126int          tr_sessionIsAddressBlocked( const tr_session *     session,
127                                         const struct in_addr * addr );
128
129
130void         tr_globalLock( tr_session * );
131
132void         tr_globalUnlock( tr_session * );
133
134int          tr_globalIsLocked( const tr_session * );
135
136#endif
Note: See TracBrowser for help on using the repository browser.