source: trunk/libtransmission/peer-io.h @ 7055

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

update NEWS

  • Property svn:keywords set to Date Rev Author Id
File size: 6.6 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-io.h 7055 2008-11-06 02:56:51Z charles $
11 */
12
13#ifndef TR_PEER_IO_H
14#define TR_PEER_IO_H
15
16/**
17***
18**/
19
20struct in_addr;
21struct evbuffer;
22struct bufferevent;
23struct tr_handle;
24struct tr_crypto;
25typedef struct tr_peerIo tr_peerIo;
26
27/**
28***
29**/
30
31tr_peerIo*           tr_peerIoNewOutgoing(
32    struct tr_handle *     session,
33    const struct in_addr * addr,
34    int                    port,
35    const  uint8_t *
36                           torrentHash );
37
38tr_peerIo*           tr_peerIoNewIncoming( struct tr_handle *     session,
39                                           const struct in_addr * addr,
40                                           uint16_t               port,
41                                           int                    socket );
42
43void                 tr_peerIoFree( tr_peerIo * io );
44
45tr_session*          tr_peerIoGetSession( tr_peerIo * io );
46
47/**
48***
49**/
50
51void                 tr_peerIoEnableLTEP( tr_peerIo * io,
52                                          int         flag );
53
54void                 tr_peerIoEnableFEXT( tr_peerIo * io,
55                                          int         flag );
56
57int                  tr_peerIoSupportsLTEP( const tr_peerIo * io );
58
59int                  tr_peerIoSupportsFEXT( const tr_peerIo * io );
60
61/**
62***
63**/
64
65const char*          tr_peerIoAddrStr( const struct in_addr * addr,
66                                       uint16_t               port );
67
68const char*          tr_peerIoGetAddrStr( const tr_peerIo * io );
69
70const struct in_addr*tr_peerIoGetAddress( const tr_peerIo * io,
71                                                uint16_t * port );
72
73const uint8_t*       tr_peerIoGetTorrentHash( tr_peerIo * io );
74
75int                  tr_peerIoHasTorrentHash( const tr_peerIo * io );
76
77void                 tr_peerIoSetTorrentHash( tr_peerIo *     io,
78                                              const uint8_t * hash );
79
80int                  tr_peerIoReconnect( tr_peerIo * io );
81
82int                  tr_peerIoIsIncoming( const tr_peerIo * io );
83
84void                 tr_peerIoSetTimeoutSecs( tr_peerIo * io,
85                                              int         secs );
86
87int                  tr_peerIoGetAge( const tr_peerIo * io );
88
89
90/**
91***
92**/
93
94void                 tr_peerIoSetPeersId( tr_peerIo *     io,
95                                          const uint8_t * peer_id );
96
97const uint8_t*       tr_peerIoGetPeersId( const tr_peerIo * io );
98
99/**
100***
101**/
102
103typedef enum
104{
105    READ_NOW,
106    READ_LATER,
107    READ_ERR
108}
109ReadState;
110
111typedef ReadState ( *tr_can_read_cb )( struct bufferevent*, void* user_data );
112typedef void ( *tr_did_write_cb )( struct bufferevent *, void * );
113typedef void ( *tr_net_error_cb )( struct bufferevent *, short what, void * );
114
115void              tr_peerIoSetIOFuncs( tr_peerIo *     io,
116                                       tr_can_read_cb  readcb,
117                                       tr_did_write_cb writecb,
118                                       tr_net_error_cb errcb,
119                                       void *          user_data );
120
121int               tr_peerIoWantsBandwidth( const tr_peerIo * io,
122                                                             tr_direction );
123
124#if 0
125void              tr_peerIoTryRead( tr_peerIo * io );
126
127#endif
128
129void              tr_peerIoWrite( tr_peerIo *  io,
130                                  const void * writeme,
131                                  size_t       writemeLen );
132
133void              tr_peerIoWriteBuf( tr_peerIo *       io,
134                                     struct evbuffer * buf );
135
136
137/**
138***
139**/
140
141struct tr_crypto* tr_peerIoGetCrypto( tr_peerIo * io );
142
143typedef enum
144{
145    /* these match the values in MSE's crypto_select */
146    PEER_ENCRYPTION_NONE  = ( 1 << 0 ),
147    PEER_ENCRYPTION_RC4   = ( 1 << 1 )
148}
149EncryptionMode;
150
151void              tr_peerIoSetEncryption( tr_peerIo * io,
152                                          int         encryptionMode );
153
154int               tr_peerIoIsEncrypted( const tr_peerIo * io );
155
156void              tr_peerIoWriteBytes( tr_peerIo *       io,
157                                       struct evbuffer * outbuf,
158                                       const void *      bytes,
159                                       size_t            byteCount );
160
161void              tr_peerIoWriteUint8( tr_peerIo *       io,
162                                       struct evbuffer * outbuf,
163                                       uint8_t           writeme );
164
165void              tr_peerIoWriteUint16( tr_peerIo *       io,
166                                        struct evbuffer * outbuf,
167                                        uint16_t          writeme );
168
169void              tr_peerIoWriteUint32( tr_peerIo *       io,
170                                        struct evbuffer * outbuf,
171                                        uint32_t          writeme );
172
173void              tr_peerIoReadBytes( tr_peerIo *       io,
174                                      struct evbuffer * inbuf,
175                                      void *            bytes,
176                                      size_t            byteCount );
177
178void              tr_peerIoReadUint8( tr_peerIo *       io,
179                                      struct evbuffer * inbuf,
180                                      uint8_t *         setme );
181
182void              tr_peerIoReadUint16( tr_peerIo *       io,
183                                       struct evbuffer * inbuf,
184                                       uint16_t *        setme );
185
186void              tr_peerIoReadUint32( tr_peerIo *       io,
187                                       struct evbuffer * inbuf,
188                                       uint32_t *        setme );
189
190void              tr_peerIoDrain( tr_peerIo *       io,
191                                  struct evbuffer * inbuf,
192                                  size_t            byteCount );
193
194/**
195***
196**/
197
198size_t            tr_peerIoGetBandwidthUsed( const tr_peerIo * io,
199                                             tr_direction      direction );
200
201size_t            tr_peerIoGetWriteBufferSpace( const tr_peerIo * io );
202
203void              tr_peerIoSetBandwidth( tr_peerIo *  io,
204                                         tr_direction direction,
205                                         size_t       bytesLeft );
206
207void              tr_peerIoSetBandwidthUnlimited( tr_peerIo *  io,
208                                                  tr_direction direction );
209
210
211#endif
Note: See TracBrowser for help on using the repository browser.