| CustomiOSApi 1.06

- Main Page
- Classes

All Classes Functions Enumerations Enumerator Pages
GCDAsyncUdpSocket.h
1 //
2 // GCDAsyncUdpSocket
3 //
4 // This class is in the public domain.
5 // Originally created by Robbie Hanson of Deusty LLC.
6 // Updated and maintained by Deusty LLC and the Apple development community.
7 //
8 // https://github.com/robbiehanson/CocoaAsyncSocket
9 //
10
11 #import <Foundation/Foundation.h>
12 #import <dispatch/dispatch.h>
13
14 //Hide it in the documentation
15 // @cond PRIVATE
16
17 extern NSString *const GCDAsyncUdpSocketException;
18 extern NSString *const GCDAsyncUdpSocketErrorDomain;
19
20 extern NSString *const GCDAsyncUdpSocketQueueName;
21 extern NSString *const GCDAsyncUdpSocketThreadName;
22
23 enum GCDAsyncUdpSocketError
24 {
25 GCDAsyncUdpSocketNoError = 0, // Never used
26 GCDAsyncUdpSocketBadConfigError, // Invalid configuration
27 GCDAsyncUdpSocketBadParamError, // Invalid parameter was passed
28 GCDAsyncUdpSocketSendTimeoutError, // A send operation timed out
29 GCDAsyncUdpSocketClosedError, // The socket was closed
30 GCDAsyncUdpSocketOtherError, // Description provided in userInfo
31 };
32 typedef enum GCDAsyncUdpSocketError GCDAsyncUdpSocketError;
33
82 typedef BOOL (^GCDAsyncUdpSocketReceiveFilterBlock)(NSData *data, NSData *address, id *context);
83
110 typedef BOOL (^GCDAsyncUdpSocketSendFilterBlock)(NSData *data, NSData *address, long tag);
111
112
113 @interface GCDAsyncUdpSocket : NSObject
114
130 - (id)init;
131 - (id)initWithSocketQueue:(dispatch_queue_t)sq;
132 - (id)initWithDelegate:(id)aDelegate delegateQueue:(dispatch_queue_t)dq;
133 - (id)initWithDelegate:(id)aDelegate delegateQueue:(dispatch_queue_t)dq socketQueue:(dispatch_queue_t)sq;
134
135 #pragma mark Configuration
136
137 - (id)delegate;
138 - (void)setDelegate:(id)delegate;
139 - (void)synchronouslySetDelegate:(id)delegate;
140
141 - (dispatch_queue_t)delegateQueue;
142 - (void)setDelegateQueue:(dispatch_queue_t)delegateQueue;
143 - (void)synchronouslySetDelegateQueue:(dispatch_queue_t)delegateQueue;
144
145 - (void)getDelegate:(id *)delegatePtr delegateQueue:(dispatch_queue_t *)delegateQueuePtr;
146 - (void)setDelegate:(id)delegate delegateQueue:(dispatch_queue_t)delegateQueue;
147 - (void)synchronouslySetDelegate:(id)delegate delegateQueue:(dispatch_queue_t)delegateQueue;
148
167 - (BOOL)isIPv4Enabled;
168 - (void)setIPv4Enabled:(BOOL)flag;
169
170 - (BOOL)isIPv6Enabled;
171 - (void)setIPv6Enabled:(BOOL)flag;
172
173 - (BOOL)isIPv4Preferred;
174 - (BOOL)isIPv6Preferred;
175 - (BOOL)isIPVersionNeutral;
176
177 - (void)setPreferIPv4;
178 - (void)setPreferIPv6;
179 - (void)setIPVersionNeutral;
180
197 - (uint16_t)maxReceiveIPv4BufferSize;
198 - (void)setMaxReceiveIPv4BufferSize:(uint16_t)max;
199
200 - (uint32_t)maxReceiveIPv6BufferSize;
201 - (void)setMaxReceiveIPv6BufferSize:(uint32_t)max;
202
207 - (id)userData;
208 - (void)setUserData:(id)arbitraryUserData;
209
210 #pragma mark Diagnostics
211
221 - (NSData *)localAddress;
222 - (NSString *)localHost;
223 - (uint16_t)localPort;
224
225 - (NSData *)localAddress_IPv4;
226 - (NSString *)localHost_IPv4;
227 - (uint16_t)localPort_IPv4;
228
229 - (NSData *)localAddress_IPv6;
230 - (NSString *)localHost_IPv6;
231 - (uint16_t)localPort_IPv6;
232
243 - (NSData *)connectedAddress;
244 - (NSString *)connectedHost;
245 - (uint16_t)connectedPort;
246
252 - (BOOL)isConnected;
253
258 - (BOOL)isClosed;
259
268 - (BOOL)isIPv4;
269
281 - (BOOL)isIPv6;
282
283 #pragma mark Binding
284
301 - (BOOL)bindToPort:(uint16_t)port error:(NSError **)errPtr;
302
323 - (BOOL)bindToPort:(uint16_t)port interface:(NSString *)interface error:(NSError **)errPtr;
324
343 - (BOOL)bindToAddress:(NSData *)localAddr error:(NSError **)errPtr;
344
345 #pragma mark Connecting
346
370 - (BOOL)connectToHost:(NSString *)host onPort:(uint16_t)port error:(NSError **)errPtr;
371
401 - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr;
402
403 #pragma mark Multicast
404
412 - (BOOL)joinMulticastGroup:(NSString *)group error:(NSError **)errPtr;
413
422 - (BOOL)joinMulticastGroup:(NSString *)group onInterface:(NSString *)interface error:(NSError **)errPtr;
423
424 - (BOOL)leaveMulticastGroup:(NSString *)group error:(NSError **)errPtr;
425 - (BOOL)leaveMulticastGroup:(NSString *)group onInterface:(NSString *)interface error:(NSError **)errPtr;
426
427 #pragma mark Broadcast
428
438 - (BOOL)enableBroadcast:(BOOL)flag error:(NSError **)errPtr;
439
440 #pragma mark Sending
441
481 - (void)sendData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag;
482
530 - (void)sendData:(NSData *)data
531 toHost:(NSString *)host
532 port:(uint16_t)port
533 withTimeout:(NSTimeInterval)timeout
534 tag:(long)tag;
535
578 - (void)sendData:(NSData *)data toAddress:(NSData *)remoteAddr withTimeout:(NSTimeInterval)timeout tag:(long)tag;
579
601 - (void)setSendFilter:(GCDAsyncUdpSocketSendFilterBlock)filterBlock withQueue:(dispatch_queue_t)filterQueue;
602
616 - (void)setSendFilter:(GCDAsyncUdpSocketSendFilterBlock)filterBlock
617 withQueue:(dispatch_queue_t)filterQueue
618 isAsynchronous:(BOOL)isAsynchronous;
619
620 #pragma mark Receiving
621
646 - (BOOL)receiveOnce:(NSError **)errPtr;
647
672 - (BOOL)beginReceiving:(NSError **)errPtr;
673
686 - (void)pauseReceiving;
687
733 - (void)setReceiveFilter:(GCDAsyncUdpSocketReceiveFilterBlock)filterBlock withQueue:(dispatch_queue_t)filterQueue;
734
748 - (void)setReceiveFilter:(GCDAsyncUdpSocketReceiveFilterBlock)filterBlock
749 withQueue:(dispatch_queue_t)filterQueue
750 isAsynchronous:(BOOL)isAsynchronous;
751
752 #pragma mark Closing
753
761 - (void)close;
762
769 - (void)closeAfterSending;
770
771 #pragma mark Advanced
772
844 - (void)markSocketQueueTargetQueue:(dispatch_queue_t)socketQueuesPreConfiguredTargetQueue;
845 - (void)unmarkSocketQueueTargetQueue:(dispatch_queue_t)socketQueuesPreviouslyConfiguredTargetQueue;
846
875 - (void)performBlock:(dispatch_block_t)block;
876
885 - (int)socketFD;
886 - (int)socket4FD;
887 - (int)socket6FD;
888
889 #if TARGET_OS_IPHONE
890
901 - (CFReadStreamRef)readStream;
902 - (CFWriteStreamRef)writeStream;
903
925 //- (BOOL)enableBackgroundingOnSockets;
926
927 #endif
928
929 #pragma mark Utilities
930
935 + (NSString *)hostFromAddress:(NSData *)address;
936 + (uint16_t)portFromAddress:(NSData *)address;
937 + (int)familyFromAddress:(NSData *)address;
938
939 + (BOOL)isIPv4Address:(NSData *)address;
940 + (BOOL)isIPv6Address:(NSData *)address;
941
942 + (BOOL)getHost:(NSString **)hostPtr port:(uint16_t *)portPtr fromAddress:(NSData *)address;
943 + (BOOL)getHost:(NSString **)hostPtr port:(uint16_t *)portPtr family:(int *)afPtr fromAddress:(NSData *)address;
944
945 @end
946
948 #pragma mark -
949
951 @protocol GCDAsyncUdpSocketDelegate
952 @optional
953
961 - (void)udpSocket:(GCDAsyncUdpSocket *)sock didConnectToAddress:(NSData *)address;
962
971 - (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotConnect:(NSError *)error;
972
976 - (void)udpSocket:(GCDAsyncUdpSocket *)sock didSendDataWithTag:(long)tag;
977
982 - (void)udpSocket:(GCDAsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error;
983
987 - (void)udpSocket:(GCDAsyncUdpSocket *)sock didReceiveData:(NSData *)data
988 fromAddress:(NSData *)address
989 withFilterContext:(id)filterContext;
990
994 - (void)udpSocketDidClose:(GCDAsyncUdpSocket *)sock withError:(NSError *)error;
995
996 @end
997