TURNSocket.h
1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
#import <Foundation/Foundation.h>
@class XMPPIQ;
@class XMPPJID;
@class XMPPStream;
@import CocoaAsyncSocket;
/**
* TURNSocket is an implementation of XEP-0065: SOCKS5 Bytestreams.
*
* It is used for establishing an out-of-band bytestream between any two XMPP users,
* mainly for the purpose of file transfer.
**/
@interface TURNSocket : NSObject <GCDAsyncSocketDelegate>
{
int state;
BOOL isClient;
dispatch_queue_t turnQueue;
void *turnQueueTag;
XMPPStream *xmppStream;
XMPPJID *jid;
NSString *uuid;
id delegate;
dispatch_queue_t delegateQueue;
dispatch_source_t turnTimer;
NSString *discoUUID;
dispatch_source_t discoTimer;
NSArray *proxyCandidates;
NSUInteger proxyCandidateIndex;
NSMutableArray *candidateJIDs;
NSUInteger candidateJIDIndex;
NSMutableArray *streamhosts;
NSUInteger streamhostIndex;
XMPPJID *proxyJID;
NSString *proxyHost;
UInt16 proxyPort;
GCDAsyncSocket *asyncSocket;
NSDate *startTime, *finishTime;
}
+ (BOOL)isNewStartTURNRequest:(XMPPIQ *)iq;
+ (NSArray *)proxyCandidates;
+ (void)setProxyCandidates:(NSArray *)candidates;
- (id)initWithStream:(XMPPStream *)xmppStream toJID:(XMPPJID *)jid;
- (id)initWithStream:(XMPPStream *)xmppStream incomingTURNRequest:(XMPPIQ *)iq;
- (void)startWithDelegate:(id)aDelegate delegateQueue:(dispatch_queue_t)aDelegateQueue;
- (BOOL)isClient;
- (void)abort;
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@protocol TURNSocketDelegate
@optional
- (void)turnSocket:(TURNSocket *)sender didSucceed:(GCDAsyncSocket *)socket;
- (void)turnSocketDidFail:(TURNSocket *)sender;
@end