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

Last change on this file since 3846 was 3846, checked in by charles, 15 years ago

remove yet more dead code

  • Property svn:keywords set to Date Rev Author Id
File size: 4.9 KB
Line 
1/*
2 * This file Copyright (C) 2007 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 3846 2007-11-17 02:47:47Z 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;
26typedef struct tr_extensions tr_extensions;
27
28/**
29***
30**/
31
32tr_peerIo*
33      tr_peerIoNewOutgoing( struct tr_handle     * handle,
34                            const struct in_addr * addr,
35                            int                    port,
36                            const  uint8_t       * torrentHash );
37
38tr_peerIo*
39      tr_peerIoNewIncoming( struct tr_handle     * handle,
40                            const struct in_addr * addr,
41                            uint16_t               port,
42                            int                    socket );
43
44void  tr_peerIoFree      ( tr_peerIo  * io );
45
46tr_handle* tr_peerIoGetHandle( tr_peerIo * io );
47
48/**
49***
50**/
51
52void  tr_peerIoEnableLTEP( tr_peerIo * io, int flag );
53void  tr_peerIoEnableFEXT( tr_peerIo * io, int flag );
54
55int   tr_peerIoSupportsLTEP( const tr_peerIo * io );
56int   tr_peerIoSupportsFEXT( const tr_peerIo * io );
57
58/**
59***
60**/
61
62const char*
63       tr_peerIoAddrStr( const struct in_addr * addr, uint16_t port );
64
65const char*
66      tr_peerIoGetAddrStr( const tr_peerIo * io );
67
68const struct in_addr*
69      tr_peerIoGetAddress( const tr_peerIo * io, uint16_t * port );
70
71const uint8_t*
72      tr_peerIoGetTorrentHash( tr_peerIo * io );
73
74int   tr_peerIoHasTorrentHash( const tr_peerIo * io );
75
76void  tr_peerIoSetTorrentHash( tr_peerIo      * io,
77                               const uint8_t  * hash );
78
79int   tr_peerIoReconnect( tr_peerIo * io );
80
81int   tr_peerIoIsIncoming( const tr_peerIo * io );
82
83void tr_peerIoSetTimeoutSecs( tr_peerIo * io, int secs );
84
85
86/**
87***
88**/
89
90void  tr_peerIoSetPeersId( tr_peerIo      * io,
91                           const uint8_t  * peer_id );
92
93const uint8_t*
94      tr_peerIoGetPeersId( const tr_peerIo * io );
95
96/**
97***
98**/
99
100typedef enum { READ_MORE, READ_AGAIN, READ_DONE } ReadState;
101typedef ReadState (*tr_can_read_cb)(struct bufferevent*, void* user_data);
102typedef void (*tr_net_error_cb)(struct bufferevent *, short what, void *);
103
104void  tr_peerIoSetIOFuncs( tr_peerIo        * io,
105                           tr_can_read_cb     readcb,
106                           tr_net_error_cb    errcb,
107                           void             * user_data );
108
109size_t tr_peerIoWriteBytesWaiting( const tr_peerIo * io );
110
111void tr_peerIoTryRead( tr_peerIo * io );
112
113void tr_peerIoWrite( tr_peerIo   * io,
114                     const void  * writeme,
115                     int           writeme_len );
116
117void tr_peerIoWriteBuf( tr_peerIo       * io,
118                        struct evbuffer * buf );
119
120
121/**
122***
123**/
124
125struct tr_crypto* tr_peerIoGetCrypto( tr_peerIo * io );
126
127typedef enum
128{
129    /* these match the values in MSE's crypto_select */
130    PEER_ENCRYPTION_NONE  = (1<<0),
131    PEER_ENCRYPTION_RC4   = (1<<1)
132}
133EncryptionMode;
134
135void tr_peerIoSetEncryption( tr_peerIo       * io,
136                              int              encryptionMode );
137
138int  tr_peerIoIsEncrypted( const tr_peerIo * io );
139
140void tr_peerIoWriteBytes  ( tr_peerIo        * io,
141                            struct evbuffer  * outbuf,
142                            const void       * bytes,
143                            int                byteCount );
144
145void tr_peerIoWriteUint8  ( tr_peerIo        * io,
146                            struct evbuffer  * outbuf,
147                            uint8_t            writeme );
148
149void tr_peerIoWriteUint16 ( tr_peerIo        * io,
150                            struct evbuffer  * outbuf,
151                            uint16_t           writeme );
152
153void tr_peerIoWriteUint32 ( tr_peerIo        * io,
154                            struct evbuffer  * outbuf,
155                            uint32_t           writeme );
156
157void tr_peerIoReadBytes   ( tr_peerIo        * io,
158                            struct evbuffer  * inbuf,
159                            void             * bytes,
160                            int                byteCount );
161
162void tr_peerIoReadUint8   ( tr_peerIo        * io,
163                            struct evbuffer  * inbuf,
164                            uint8_t          * setme );
165
166void tr_peerIoReadUint16  ( tr_peerIo        * io,
167                            struct evbuffer  * inbuf,
168                            uint16_t         * setme );
169
170void tr_peerIoReadUint32  ( tr_peerIo        * io,
171                            struct evbuffer  * inbuf,
172                            uint32_t         * setme );
173
174void tr_peerIoDrain       ( tr_peerIo        * io,
175                            struct evbuffer  * inbuf,
176                            int                byteCount );
177
178
179#endif
Note: See TracBrowser for help on using the repository browser.