15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
*/
#import "OFObject.h"
#import "OFKernelEventObserver.h"
#import "socket.h"
/*! @file */
@class OFUDPSocket;
@class OFException;
/*!
* @struct of_udp_socket_address_t OFUDPSocket.h ObjFW/OFUDPSocket.h
|
>
>
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
*/
#import "OFObject.h"
#import "OFKernelEventObserver.h"
#import "socket.h"
OF_ASSUME_NONNULL_BEGIN
/*! @file */
@class OFUDPSocket;
@class OFException;
/*!
* @struct of_udp_socket_address_t OFUDPSocket.h ObjFW/OFUDPSocket.h
|
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
|
* @param host The host that has been resolved
* @param port The port of the host / port pair
* @param address The address of the resolved host / port pair
* @param exception An exception which occurred while resolving or nil on
* success
*/
typedef void (^of_udp_socket_async_resolve_block_t)(OFString *host,
uint16_t port, of_udp_socket_address_t address, OFException *exception);
/*!
* @brief A block which is called when a packet has been received.
*
* @param socket The UDP which received a packet
* @param buffer The buffer the packet has been written to
* @param length The length of the packet
* @param sender The address of the sender of the packet
* @param exception An exception which occurred while receiving or nil on
* success
* @return A bool whether the same block should be used for the next receive
*/
typedef bool (^of_udp_socket_async_receive_block_t)(OFUDPSocket *socket,
void *buffer, size_t length, of_udp_socket_address_t sender,
OFException *exception);
#endif
/*!
* @class OFUDPSocket OFUDPSocket.h ObjFW/OFUDPSocket.h
*
* @brief A class which provides functions to create and use UDP sockets.
*
* Addresses are of type @ref of_udp_socket_address_t. You can use @ref
* getHost:andPort:forAddress: to create an address for a host / port pair and
* @ref getHost:andPort:forAddress: to get the host / port pair for an address.
* If you want to compare two addresses, you can use
* @ref of_udp_socket_address_equal and you can use
* @ref of_udp_socket_address_hash to get a hash to use in e.g.
* @ref OFMapTable.
*
* @warning Even though the OFCopying protocol is implemented, it does *not*
* return an independent copy of the socket, but instead retains it.
* This is so that the socket can be used as a key for a dictionary,
* so context can be associated with a socket. Using a socket in more
* than one thread at the same time is not thread-safe, even if copy
* was called to create one "instance" for every thread!
|
|
>
|
|
<
|
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
|
* @param host The host that has been resolved
* @param port The port of the host / port pair
* @param address The address of the resolved host / port pair
* @param exception An exception which occurred while resolving or nil on
* success
*/
typedef void (^of_udp_socket_async_resolve_block_t)(OFString *host,
uint16_t port, of_udp_socket_address_t address,
__nullable OFException *exception);
/*!
* @brief A block which is called when a packet has been received.
*
* @param socket The UDP which received a packet
* @param buffer The buffer the packet has been written to
* @param length The length of the packet
* @param sender The address of the sender of the packet
* @param exception An exception which occurred while receiving or nil on
* success
* @return A bool whether the same block should be used for the next receive
*/
typedef bool (^of_udp_socket_async_receive_block_t)(OFUDPSocket *socket,
void *buffer, size_t length, of_udp_socket_address_t sender,
__nullable OFException *exception);
#endif
/*!
* @class OFUDPSocket OFUDPSocket.h ObjFW/OFUDPSocket.h
*
* @brief A class which provides functions to create and use UDP sockets.
*
* Addresses are of type @ref of_udp_socket_address_t. You can use @ref
* getHost:andPort:forAddress: to create an address for a host / port pair and
* @ref getHost:andPort:forAddress: to get the host / port pair for an address.
* If you want to compare two addresses, you can use
* @ref of_udp_socket_address_equal and you can use
* @ref of_udp_socket_address_hash to get a hash to use in e.g. @ref OFMapTable.
*
* @warning Even though the OFCopying protocol is implemented, it does *not*
* return an independent copy of the socket, but instead retains it.
* This is so that the socket can be used as a key for a dictionary,
* so context can be associated with a socket. Using a socket in more
* than one thread at the same time is not thread-safe, even if copy
* was called to create one "instance" for every thread!
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
*
* @param host A pointer to an OFString*. If it is not NULL, it will be set to
* the host of the host / port pair.
* @param port A pointer to an uint16_t. If it is not NULL, the port of the
* host / port pair will be written to it.
* @param address The address for which the host and port should be retrieved
*/
+ (void)getHost: (OFString *__autoreleasing*)host
andPort: (uint16_t*)port
forAddress: (of_udp_socket_address_t*)address;
/*!
* @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.
|
|
|
|
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
*
* @param host A pointer to an OFString*. If it is not NULL, it will be set to
* the host of the host / port pair.
* @param port A pointer to an uint16_t. If it is not NULL, the port of the
* host / port pair will be written to it.
* @param address The address for which the host and port should be retrieved
*/
+ (void)getHost: (__nonnull OFString *__autoreleasing *__nullable)host
andPort: (__nullable uint16_t*)port
forAddress: (of_udp_socket_address_t*)address;
/*!
* @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.
|
276
277
278
279
280
281
282
|
* @param address The address to hash
* @return The hash for the specified of_udp_socket_address_t
*/
extern uint32_t of_udp_socket_address_hash(of_udp_socket_address_t *address);
#ifdef __cplusplus
}
#endif
|
>
>
|
278
279
280
281
282
283
284
285
286
|
* @param address The address to hash
* @return The hash for the specified of_udp_socket_address_t
*/
extern uint32_t of_udp_socket_address_hash(of_udp_socket_address_t *address);
#ifdef __cplusplus
}
#endif
OF_ASSUME_NONNULL_END
|