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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
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
60
61
62
63
64
65
66
67
68
69
70
71
|
-
-
-
+
-
-
+
-
-
-
+
-
-
+
-
|
@class OFData;
@class OFSequencedPacketSocket;
#ifdef OF_HAVE_BLOCKS
/*!
* @brief A block which is called when a packet has been received.
*
* @param socket The sequenced packet socket which received a packet
* @param buffer The buffer the packet has been written to
* @param length The length 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_sequenced_packet_socket_async_receive_block_t)(
typedef bool (^of_sequenced_packet_socket_async_receive_block_t)(size_t length,
OFSequencedPacketSocket *_Nonnull socket, void *_Nonnull buffer,
size_t length, id _Nullable exception);
id _Nullable exception);
/*!
* @brief A block which is called when a packet has been sent.
*
* @param socket The sequenced packet socket which sent a packet
* @param data The data which was sent
* @param exception An exception which occurred while reading or `nil` on
* success
* @return The data to repeat the send with or nil if it should not repeat
*/
typedef OFData *_Nullable (^of_sequenced_packet_socket_async_send_data_block_t)(
OFSequencedPacketSocket *_Nonnull socket, OFData *_Nonnull data,
id _Nullable exception);
OFData *_Nonnull data, id _Nullable exception);
/*!
* @brief A block which is called when the socket accepted a connection.
*
* @param socket The socket which accepted the connection
* @param acceptedSocket The socket which has been accepted
* @param exception An exception which occurred while accepting the socket or
* `nil` on success
* @return A bool whether the same block should be used for the next incoming
* connection
*/
typedef bool (^of_sequenced_packet_socket_async_accept_block_t)(
OFSequencedPacketSocket *socket, OFSequencedPacketSocket *acceptedSocket,
OFSequencedPacketSocket *acceptedSocket, id _Nullable exception);
id _Nullable exception);
#endif
/*!
* @protocol OFSequencedPacketSocketDelegate OFSequencedPacketSocket.h \
* ObjFW/OFSequencedPacketSocket.h
*
* @brief A delegate for OFSequencedPacketSocket.
|