20
21
22
23
24
25
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
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
|
20
21
22
23
24
25
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
-
-
+
+
-
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
|
#endif
#import "OFSocket.h"
OF_ASSUME_NONNULL_BEGIN
/**
* @class OFBindFailedException \
* OFBindFailedException.h ObjFW/OFBindFailedException.h
* @class OFBindSocketFailedException \
* OFBindSocketFailedException.h ObjFW/OFBindSocketFailedException.h
*
* @brief An exception indicating that binding a socket failed.
*/
@interface OFBindFailedException: OFException
@interface OFBindSocketFailedException: OFException
{
/* IP */
OFString *_Nullable _host;
uint16_t _port;
/* IPX */
uint8_t _packetType;
/* UNIX socket */
OFString *_Nullable _path;
id _socket;
int _errNo;
OF_RESERVE_IVARS(OFBindFailedException, 4)
OF_RESERVE_IVARS(OFBindSocketFailedException, 4)
}
/**
* @brief The host on which binding failed.
*/
@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *host;
/**
* @brief The port on which binding failed.
*/
@property (readonly, nonatomic) uint16_t port;
/**
* @brief The IPX packet type for which binding failed.
*/
@property (readonly, nonatomic) uint8_t packetType;
/**
* @brief The path on which binding failed.
*/
@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *path;
/**
* @brief The socket which could not be bound.
*/
@property (readonly, nonatomic) id socket;
/**
* @brief The errno of the error that occurred.
*/
@property (readonly, nonatomic) int errNo;
/**
* @brief Creates a new, autoreleased bind failed exception.
* @brief Creates a new, autoreleased bind socket failed exception.
*
* @param host The host on which binding failed
* @param port The port on which binding failed
* @param socket The socket which could not be bound
* @param errNo The errno of the error that occurred
* @return A new, autoreleased bind failed exception
* @return A new, autoreleased bind socket failed exception
*/
+ (instancetype)exceptionWithHost: (OFString *)host
+ (instancetype)exceptionWithSocket: (id)socket errNo: (int)errNo;
port: (uint16_t)port
socket: (id)socket
errNo: (int)errNo;
+ (instancetype)exception OF_UNAVAILABLE;
/**
* @brief Creates a new, autoreleased bind failed exception.
*
* @param port The IPX port to which binding failed
* @param packetType The IPX packet type for which binding failed
* @param socket The socket which could not be bound
* @param errNo The errno of the error that occurred
* @return A new, autoreleased bind failed exception
*/
+ (instancetype)exceptionWithPort: (uint16_t)port
packetType: (uint8_t)packetType
socket: (id)socket
errNo: (int)errNo;
/**
* @brief Creates a new, autoreleased bind failed exception.
*
* @param path The path on which binding failed
* @param socket The socket which could not be bound
* @param errNo The errno of the error that occurred
* @return A new, autoreleased bind failed exception
*/
+ (instancetype)exceptionWithPath: (OFString *)path
socket: (id)socket
errNo: (int)errNo;
/**
* @brief Initializes an already allocated bind failed exception.
* @brief Initializes an already allocated bind socket failed exception.
*
* @param host The host on which binding failed
* @param port The port on which binding failed
* @param socket The socket which could not be bound
* @param errNo The errno of the error that occurred
* @return An initialized bind failed exception
* @return An initialized bind socket failed exception
*/
- (instancetype)initWithHost: (OFString *)host
port: (uint16_t)port
socket: (id)socket
errNo: (int)errNo;
/**
* @brief Initializes an already allocated bind failed exception.
*
* @param port The IPX port to which binding failed
* @param packetType The IPX packet type for which binding failed
* @param socket The socket which could not be bound
* @param errNo The errno of the error that occurred
* @return An initialized bind failed exception
*/
- (instancetype)initWithPort: (uint16_t)port
- (instancetype)initWithSocket: (id)socket
packetType: (uint8_t)packetType
socket: (id)socket
errNo: (int)errNo;
errNo: (int)errNo OF_DESIGNATED_INITIALIZER;
/**
* @brief Initializes an already allocated bind failed exception.
*
* @param path The path on which binding failed
* @param socket The socket which could not be bound
* @param errNo The errno of the error that occurred
* @return An initialized bind failed exception
*/
- (instancetype)initWithPath: (OFString *)path
socket: (id)socket
errNo: (int)errNo;
- (instancetype)init OF_UNAVAILABLE;
@end
OF_ASSUME_NONNULL_END
|