Changeset 7579 for trunk/libtransmission/peer-io.h
- Timestamp:
- Jan 2, 2009, 5:46:22 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/peer-io.h
r7576 r7579 22 22 **/ 23 23 24 #include <assert.h> 25 26 #include <event.h> 27 28 #include "transmission.h" 29 #include "list.h" /* __tr_list */ 30 #include "net.h" /* tr_address */ 31 24 32 struct evbuffer; 25 struct tr_address;26 33 struct tr_bandwidth; 27 34 struct tr_crypto; 28 typedef struct tr_peerIo tr_peerIo; 35 struct tr_peerIo; 36 37 typedef enum 38 { 39 READ_NOW, 40 READ_LATER, 41 READ_ERR 42 } 43 ReadState; 44 45 typedef ReadState ( *tr_can_read_cb )( struct tr_peerIo * io, 46 void * user_data, 47 size_t * setme_piece_byte_count ); 48 49 typedef void ( *tr_did_write_cb )( struct tr_peerIo * io, 50 size_t bytesWritten, 51 int wasPieceData, 52 void * userData ); 53 54 typedef void ( *tr_net_error_cb )( struct tr_peerIo * io, 55 short what, 56 void * userData ); 57 58 typedef struct tr_peerIo 59 { 60 tr_bool isEncrypted; 61 tr_bool isIncoming; 62 tr_bool peerIdIsSet; 63 tr_bool extendedProtocolSupported; 64 tr_bool fastExtensionSupported; 65 66 int magicNumber; 67 68 uint8_t encryptionMode; 69 tr_port port; 70 int socket; 71 72 uint8_t peerId[SHA_DIGEST_LENGTH]; 73 time_t timeCreated; 74 75 tr_session * session; 76 77 tr_address addr; 78 79 tr_can_read_cb canRead; 80 tr_did_write_cb didWrite; 81 tr_net_error_cb gotError; 82 void * userData; 83 84 struct tr_bandwidth * bandwidth; 85 struct tr_crypto * crypto; 86 87 struct evbuffer * inbuf; 88 struct evbuffer * outbuf; 89 struct __tr_list outbuf_datatypes; /* struct tr_datatype */ 90 91 struct event event_read; 92 struct event event_write; 93 } 94 tr_peerIo; 29 95 30 96 /** … … 84 150 tr_bool tr_peerIoIsIncoming( const tr_peerIo * io ); 85 151 86 extern inline int tr_peerIoGetAge( const tr_peerIo * io ); 152 static inline int tr_peerIoGetAge( const tr_peerIo * io ) 153 { 154 return time( NULL ) - io->timeCreated; 155 } 87 156 88 157 … … 99 168 *** 100 169 **/ 101 102 typedef enum103 {104 READ_NOW,105 READ_LATER,106 READ_ERR107 }108 ReadState;109 110 typedef ReadState ( *tr_can_read_cb )( tr_peerIo * io,111 void * user_data,112 size_t * setme_piece_byte_count );113 114 typedef void ( *tr_did_write_cb )( tr_peerIo * io,115 size_t bytesWritten,116 int wasPieceData,117 void * userData );118 119 typedef void ( *tr_net_error_cb )( tr_peerIo * io,120 short what,121 void * userData );122 170 123 171 void tr_peerIoSetIOFuncs ( tr_peerIo * io, … … 164 212 size_t byteCount ); 165 213 166 void tr_peerIoWriteUint8( tr_peerIo * io, 167 struct evbuffer * outbuf, 168 uint8_t writeme ); 169 170 void tr_peerIoWriteUint16( tr_peerIo * io, 171 struct evbuffer * outbuf, 172 uint16_t writeme ); 173 174 void tr_peerIoWriteUint32( tr_peerIo * io, 175 struct evbuffer * outbuf, 176 uint32_t writeme ); 214 static inline void tr_peerIoWriteUint8( tr_peerIo * io, 215 struct evbuffer * outbuf, 216 uint8_t writeme ) 217 { 218 tr_peerIoWriteBytes( io, outbuf, &writeme, sizeof( uint8_t ) ); 219 } 220 221 static inline void tr_peerIoWriteUint16( tr_peerIo * io, 222 struct evbuffer * outbuf, 223 uint16_t writeme ) 224 { 225 const uint16_t tmp = htons( writeme ); 226 tr_peerIoWriteBytes( io, outbuf, &tmp, sizeof( uint16_t ) ); 227 } 228 229 static inline void tr_peerIoWriteUint32( tr_peerIo * io, 230 struct evbuffer * outbuf, 231 uint32_t writeme ) 232 { 233 const uint32_t tmp = htonl( writeme ); 234 tr_peerIoWriteBytes( io, outbuf, &tmp, sizeof( uint32_t ) ); 235 } 177 236 178 237 void tr_peerIoReadBytes( tr_peerIo * io, … … 181 240 size_t byteCount ); 182 241 183 extern inline void 184 tr_peerIoReadUint8( tr_peerIo * io, 185 struct evbuffer * inbuf, 186 uint8_t * setme ); 187 188 extern inline void 189 tr_peerIoReadUint16( tr_peerIo * io, 190 struct evbuffer * inbuf, 191 uint16_t * setme ); 192 193 extern inline void 194 tr_peerIoReadUint32( tr_peerIo * io, 195 struct evbuffer * inbuf, 196 uint32_t * setme ); 242 static inline void tr_peerIoReadUint8( tr_peerIo * io, 243 struct evbuffer * inbuf, 244 uint8_t * setme ) 245 { 246 tr_peerIoReadBytes( io, inbuf, setme, sizeof( uint8_t ) ); 247 } 248 249 static inline void tr_peerIoReadUint16( tr_peerIo * io, 250 struct evbuffer * inbuf, 251 uint16_t * setme ) 252 { 253 uint16_t tmp; 254 tr_peerIoReadBytes( io, inbuf, &tmp, sizeof( uint16_t ) ); 255 *setme = ntohs( tmp ); 256 } 257 258 static inline void tr_peerIoReadUint32( tr_peerIo * io, 259 struct evbuffer * inbuf, 260 uint32_t * setme ) 261 { 262 uint32_t tmp; 263 tr_peerIoReadBytes( io, inbuf, &tmp, sizeof( uint32_t ) ); 264 *setme = ntohl( tmp ); 265 } 197 266 198 267 void tr_peerIoDrain( tr_peerIo * io, … … 214 283 int isPieceData ); 215 284 216 /** 217 *** 218 **/ 219 220 extern inline tr_bool tr_peerIoHasBandwidthLeft( const tr_peerIo * io, 221 tr_direction direction ); 285 tr_bool tr_peerIoHasBandwidthLeft( const tr_peerIo * io, 286 tr_direction dir ); 287 288 /** 289 *** 290 **/ 222 291 223 292 void tr_peerIoSetEnabled( tr_peerIo * io, … … 229 298 size_t byteLimit ); 230 299 231 extern inline struct evbuffer * tr_peerIoGetReadBuffer( tr_peerIo * io ); 232 233 300 /** 301 *** 302 **/ 303 304 static inline struct evbuffer * tr_peerIoGetReadBuffer( tr_peerIo * io ) 305 { 306 assert( tr_isPeerIo( io ) ); 307 308 return io->inbuf; 309 } 234 310 235 311
Note: See TracChangeset
for help on using the changeset viewer.