Overview
Comment: | OFTCPSocket: Rework blocks-based API |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
9611851a8964e2a7e501d97a1ff76ae8 |
User & Date: | js on 2024-10-27 18:10:06 |
Other Links: | manifest | tags |
Context
2024-10-27
| ||
18:38 | Remove nullable in .m files check-in: 7d1275cb49 user: js tags: trunk | |
18:10 | OFTCPSocket: Rework blocks-based API check-in: 9611851a89 user: js tags: trunk | |
17:59 | OFStreamSocket: Rework blocks-based API check-in: 34b4d743ad user: js tags: trunk | |
Changes
Modified src/OFAsyncIPSocketConnector.m from [b771b2df3c] to [747b84f30d].
︙ | ︙ | |||
72 73 74 75 76 77 78 | { if (_exception == nil) [_socket setCanBlock: true]; #ifdef OF_HAVE_BLOCKS if (_handler != NULL) { if ([_socket isKindOfClass: [OFTCPSocket class]]) | > | | 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | { if (_exception == nil) [_socket setCanBlock: true]; #ifdef OF_HAVE_BLOCKS if (_handler != NULL) { if ([_socket isKindOfClass: [OFTCPSocket class]]) ((OFTCPSocketConnectedHandler)_handler)(_socket, _host, _port, _exception); # ifdef OF_HAVE_SCTP else if ([_socket isKindOfClass: [OFSCTPSocket class]]) ((OFSCTPSocketConnectedHandler)_handler)(_socket, _host, _port, _exception); # endif else OFEnsure(0); |
︙ | ︙ |
Modified src/OFTCPSocket.h from [a17e251c9a] to [3d8f48f978].
︙ | ︙ | |||
27 28 29 30 31 32 33 34 35 36 | @class OFTCPSocket; @class OFString; #ifdef OF_HAVE_BLOCKS /** * @brief A block which is called when the socket connected. * * @param exception An exception which occurred while connecting the socket or * `nil` on success */ | > > > > > > > > > > > > > > | > | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | @class OFTCPSocket; @class OFString; #ifdef OF_HAVE_BLOCKS /** * @brief A block which is called when the socket connected. * * @deprecated Use @ref OFTCPSocketConnecetedHandler instead. * * @param exception An exception which occurred while connecting the socket or * `nil` on success */ typedef void (^OFTCPSocketAsyncConnectBlock)(id _Nullable exception) OF_DEPRECATED(ObjFW, 1, 2, "Use OFTCPSocketConnecetedHandler instead"); /** * @brief A handler which is called when the socket connected. * * @param socket The socket which connected * @param host The host connected to * @param port The port on the host connected to * @param exception An exception which occurred while connecting the socket or * `nil` on success */ typedef void (^OFTCPSocketConnectedHandler)(OFTCPSocket *socket, OFString *host, uint16_t port, id _Nullable exception); #endif /** * @protocol OFTCPSocketDelegate OFTCPSocket.h ObjFW/ObjFW.h * * A delegate for OFTCPSocket. */ |
︙ | ︙ | |||
185 186 187 188 189 190 191 192 193 194 195 196 197 | port: (uint16_t)port runLoopMode: (OFRunLoopMode)runLoopMode; #ifdef OF_HAVE_BLOCKS /** * @brief Asynchronously connects the OFTCPSocket to the specified destination. * * @param host The host to connect to * @param port The port on the host to connect to * @param block The block to execute once the connection has been established */ - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port | > > | > > > > > > > > > > > > > > > | > > > > > > > > > > > > > > > > | 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 | port: (uint16_t)port runLoopMode: (OFRunLoopMode)runLoopMode; #ifdef OF_HAVE_BLOCKS /** * @brief Asynchronously connects the OFTCPSocket to the specified destination. * * @deprecated Use @ref asyncConnectToHost:port:handler: instead. * * @param host The host to connect to * @param port The port on the host to connect to * @param block The block to execute once the connection has been established */ - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port block: (OFTCPSocketAsyncConnectBlock)block OF_DEPRECATED(ObjFW, 1, 2, "Use -[asyncConnectToHost:port:handler:] instead"); /** * @brief Asynchronously connects the OFTCPSocket to the specified destination. * * @param host The host to connect to * @param port The port on the host to connect to * @param handler The handler to call once the connection has been established */ - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port handler: (OFTCPSocketConnectedHandler)handler; /** * @brief Asynchronously connects the OFTCPSocket to the specified destination. * * @deprecated Use @ref asyncConnectToHost:port:runLoopMode:handler: instead. * * @param host The host to connect to * @param port The port on the host to connect to * @param runLoopMode The run loop mode in which to perform the asynchronous * connect * @param block The block to execute once the connection has been established */ - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port runLoopMode: (OFRunLoopMode)runLoopMode block: (OFTCPSocketAsyncConnectBlock)block OF_DEPRECATED(ObjFW, 1, 2, "Use -[asyncConnectToHost:port:runLoopMode:handler:] instead"); /** * @brief Asynchronously connects the OFTCPSocket to the specified destination. * * @param host The host to connect to * @param port The port on the host to connect to * @param runLoopMode The run loop mode in which to perform the asynchronous * connect * @param handler The handler to call once the connection has been established */ - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port runLoopMode: (OFRunLoopMode)runLoopMode handler: (OFTCPSocketConnectedHandler)handler; #endif /** * @brief Binds the socket to the specified host and port. * * @param host The host to bind to. Use `@"0.0.0.0"` for IPv4 or `@"::"` for * IPv6 to bind to all. |
︙ | ︙ |
Modified src/OFTCPSocket.m from [aec1aff11b] to [5c97e81fe5].
︙ | ︙ | |||
227 228 229 230 231 232 233 | if (_SOCKS5Host != nil) { delegate = [[[OFTCPSocketSOCKS5Connector alloc] initWithSocket: self host: host port: port delegate: _delegate #ifdef OF_HAVE_BLOCKS | | | 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 | if (_SOCKS5Host != nil) { delegate = [[[OFTCPSocketSOCKS5Connector alloc] initWithSocket: self host: host port: port delegate: _delegate #ifdef OF_HAVE_BLOCKS handler: NULL #endif ] autorelease]; host = _SOCKS5Host; port = _SOCKS5Port; } else delegate = _delegate; |
︙ | ︙ | |||
251 252 253 254 255 256 257 258 259 260 | } #ifdef OF_HAVE_BLOCKS - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port block: (OFTCPSocketAsyncConnectBlock)block { [self asyncConnectToHost: host port: port runLoopMode: OFDefaultRunLoopMode | > > > > > > > > > > > > > > > | > > > > > > > > > > > > > > > > | | > | 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 | } #ifdef OF_HAVE_BLOCKS - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port block: (OFTCPSocketAsyncConnectBlock)block { OFTCPSocketConnectedHandler handler = ^ (OFTCPSocket *socket, OFString *host_, uint16_t port_, id exception) { block(exception); }; [self asyncConnectToHost: host port: port runLoopMode: OFDefaultRunLoopMode handler: handler]; } - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port handler: (OFTCPSocketConnectedHandler)handler { [self asyncConnectToHost: host port: port runLoopMode: OFDefaultRunLoopMode handler: handler]; } - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port runLoopMode: (OFRunLoopMode)runLoopMode block: (OFTCPSocketAsyncConnectBlock)block { OFTCPSocketConnectedHandler handler = ^ (OFTCPSocket *socket, OFString *host_, uint16_t port_, id exception) { block(exception); }; [self asyncConnectToHost: host port: port runLoopMode: runLoopMode handler: handler]; } - (void)asyncConnectToHost: (OFString *)host port: (uint16_t)port runLoopMode: (OFRunLoopMode)runLoopMode handler: (OFTCPSocketConnectedHandler)handler { void *pool = objc_autoreleasePoolPush(); id <OFTCPSocketDelegate> delegate = nil; if (_SOCKS5Host != nil) { delegate = [[[OFTCPSocketSOCKS5Connector alloc] initWithSocket: self host: host port: port delegate: nil handler: handler] autorelease]; host = _SOCKS5Host; port = _SOCKS5Port; } [[[[OFAsyncIPSocketConnector alloc] initWithSocket: self host: host port: port delegate: delegate handler: (delegate == nil ? handler : NULL)] autorelease] startWithRunLoopMode: runLoopMode]; objc_autoreleasePoolPop(pool); } #endif - (OFSocketAddress)bindToHost: (OFString *)host port: (uint16_t)port |
︙ | ︙ |
Modified src/OFTCPSocketSOCKS5Connector.h from [3783ed72e5] to [6cf1689ed5].
︙ | ︙ | |||
26 27 28 29 30 31 32 | @interface OFTCPSocketSOCKS5Connector: OFObject <OFTCPSocketDelegate> { OFTCPSocket *_socket; OFString *_host; uint16_t _port; id <OFTCPSocketDelegate> _Nullable _delegate; #ifdef OF_HAVE_BLOCKS | | | | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | @interface OFTCPSocketSOCKS5Connector: OFObject <OFTCPSocketDelegate> { OFTCPSocket *_socket; OFString *_host; uint16_t _port; id <OFTCPSocketDelegate> _Nullable _delegate; #ifdef OF_HAVE_BLOCKS OFTCPSocketConnectedHandler _Nullable _handler; #endif id _Nullable _exception; uint_least8_t _SOCKS5State; /* Longest read is domain name (max 255 bytes) + port */ unsigned char _buffer[257]; OFMutableData *_Nullable _request; } - (instancetype)initWithSocket: (OFTCPSocket *)sock host: (OFString *)host port: (uint16_t)port delegate: (nullable id <OFTCPSocketDelegate>)delegate #ifdef OF_HAVE_BLOCKS handler: (nullable OFTCPSocketConnectedHandler)handler #endif ; - (void)didConnect; @end OF_ASSUME_NONNULL_END |
Modified src/OFTCPSocketSOCKS5Connector.m from [c1282bd51e] to [481d05992c].
︙ | ︙ | |||
39 40 41 42 43 44 45 | @implementation OFTCPSocketSOCKS5Connector - (instancetype)initWithSocket: (OFTCPSocket *)sock host: (OFString *)host port: (uint16_t)port delegate: (id <OFTCPSocketDelegate>)delegate #ifdef OF_HAVE_BLOCKS | | | | | | | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | @implementation OFTCPSocketSOCKS5Connector - (instancetype)initWithSocket: (OFTCPSocket *)sock host: (OFString *)host port: (uint16_t)port delegate: (id <OFTCPSocketDelegate>)delegate #ifdef OF_HAVE_BLOCKS handler: (OFTCPSocketConnectedHandler)handler #endif { self = [super init]; @try { _socket = [sock retain]; _host = [host copy]; _port = port; _delegate = [delegate retain]; #ifdef OF_HAVE_BLOCKS _handler = [handler copy]; #endif _socket.delegate = self; } @catch (id e) { [self release]; @throw e; } return self; } - (void)dealloc { if (_socket.delegate == self) _socket.delegate = _delegate; [_socket release]; [_host release]; [_delegate release]; #ifdef OF_HAVE_BLOCKS [_handler release]; #endif [_exception release]; [_request release]; [super dealloc]; } - (void)didConnect { _socket.delegate = _delegate; #ifdef OF_HAVE_BLOCKS if (_handler != NULL) _handler(_socket, _host, _port, _exception); else { #endif if ([_delegate respondsToSelector: @selector(socket:didConnectToHost:port:exception:)]) [_delegate socket: _socket didConnectToHost: _host port: _port |
︙ | ︙ |