MQTTClient
an Objective-C Framework for MQTT
MQTTSessionManager.h
1 //
2 // MQTTSessionManager.h
3 // MQTTClient
4 //
5 // Created by Christoph Krey on 09.07.14.
6 // Copyright © 2013-2017 Christoph Krey. All rights reserved.
7 //
8 
9 #import <Foundation/Foundation.h>
10 #if TARGET_OS_IPHONE == 1
11 #import <UIKit/UIKit.h>
12 #endif
13 #import "MQTTSession.h"
14 #import "MQTTSessionLegacy.h"
15 #import "MQTTSSLSecurityPolicy.h"
16 
17 @class MQTTSessionManager;
18 
21 @protocol MQTTSessionManagerDelegate <NSObject>
22 
26 typedef NS_ENUM(int, MQTTSessionManagerState) {
27  MQTTSessionManagerStateStarting,
28  MQTTSessionManagerStateConnecting,
29  MQTTSessionManagerStateError,
30  MQTTSessionManagerStateConnected,
31  MQTTSessionManagerStateClosing,
32  MQTTSessionManagerStateClosed
33 };
34 
35 @optional
36 
43 - (void)handleMessage:(NSData *)data onTopic:(NSString *)topic retained:(BOOL)retained;
44 
51 - (void)sessionManager:(MQTTSessionManager *)sessionManager
52  didReceiveMessage:(NSData *)data
53  onTopic:(NSString *)topic
54  retained:(BOOL)retained;
55 
60 - (void)messageDelivered:(UInt16)msgID;
61 
67 - (void)sessionManager:(MQTTSessionManager *)sessionManager didDeliverMessage:(UInt16)msgID;
68 
73 - (void)sessionManager:(MQTTSessionManager *)sessionManager didChangeState:(MQTTSessionManagerState)newState;
74 
75 @end
76 
79 @interface MQTTSessionManager : NSObject <MQTTSessionDelegate>
80 
83 @property (strong, nonatomic, readonly) MQTTSession *session;
84 
87 @property (readonly) NSString *host;
88 
91 @property (readonly) UInt32 port;
92 
95 @property (weak, nonatomic) id<MQTTSessionManagerDelegate> delegate;
96 
104 @property (strong, nonatomic) NSDictionary<NSString *, NSNumber *> *subscriptions;
105 
135 @property (readonly, strong, nonatomic) NSDictionary<NSString *, NSNumber *> *effectiveSubscriptions;
136 
139 @property (nonatomic, readonly) MQTTSessionManagerState state;
140 
143 @property (nonatomic, readonly) NSError *lastErrorCode;
144 
157 - (MQTTSessionManager *)initWithPersistence:(BOOL)persistent
158  maxWindowSize:(NSUInteger)maxWindowSize
159  maxMessages:(NSUInteger)maxMessages
160  maxSize:(NSUInteger)maxSize
161  maxConnectionRetryInterval:(NSTimeInterval)maxRetryInterval
162  connectInForeground:(BOOL)connectInForeground;
163 
173 - (MQTTSessionManager *)initWithPersistence:(BOOL)persistent
174  maxWindowSize:(NSUInteger)maxWindowSize
175  maxMessages:(NSUInteger)maxMessages
176  maxSize:(NSUInteger)maxSize
177  connectInForeground:(BOOL)connectInForeground;
178 
187 - (MQTTSessionManager *)initWithPersistence:(BOOL)persistent
188  maxWindowSize:(NSUInteger)maxWindowSize
189  maxMessages:(NSUInteger)maxMessages
190  maxSize:(NSUInteger)maxSize;
191 
212 - (void)connectTo:(NSString *)host
213  port:(NSInteger)port
214  tls:(BOOL)tls
215  keepalive:(NSInteger)keepalive
216  clean:(BOOL)clean
217  auth:(BOOL)auth
218  user:(NSString *)user
219  pass:(NSString *)pass
220  will:(BOOL)will
221  willTopic:(NSString *)willTopic
222  willMsg:(NSData *)willMsg
223  willQos:(MQTTQosLevel)willQos
224  willRetainFlag:(BOOL)willRetainFlag
225  withClientId:(NSString *)clientId
226  securityPolicy:(MQTTSSLSecurityPolicy *)securityPolicy
227  certificates:(NSArray *)certificates
228  protocolLevel:(MQTTProtocolVersion)protocolLevel;
229 
230 
250 - (void)connectTo:(NSString *)host
251  port:(NSInteger)port
252  tls:(BOOL)tls
253  keepalive:(NSInteger)keepalive
254  clean:(BOOL)clean
255  auth:(BOOL)auth
256  user:(NSString *)user
257  pass:(NSString *)pass
258  will:(BOOL)will
259  willTopic:(NSString *)willTopic
260  willMsg:(NSData *)willMsg
261  willQos:(MQTTQosLevel)willQos
262  willRetainFlag:(BOOL)willRetainFlag
263  withClientId:(NSString *)clientId
264  securityPolicy:(MQTTSSLSecurityPolicy *)securityPolicy
265  certificates:(NSArray *)certificates;
266 
284 - (void)connectTo:(NSString *)host
285  port:(NSInteger)port
286  tls:(BOOL)tls
287  keepalive:(NSInteger)keepalive
288  clean:(BOOL)clean
289  auth:(BOOL)auth
290  user:(NSString *)user
291  pass:(NSString *)pass
292  will:(BOOL)will
293  willTopic:(NSString *)willTopic
294  willMsg:(NSData *)willMsg
295  willQos:(MQTTQosLevel)willQos
296  willRetainFlag:(BOOL)willRetainFlag
297  withClientId:(NSString *)clientId;
298 
315 - (void)connectTo:(NSString *)host
316  port:(NSInteger)port
317  tls:(BOOL)tls
318  keepalive:(NSInteger)keepalive
319  clean:(BOOL)clean
320  auth:(BOOL)auth
321  user:(NSString *)user
322  pass:(NSString *)pass
323  willTopic:(NSString *)willTopic
324  will:(NSData *)will
325  willQos:(MQTTQosLevel)willQos
326  willRetainFlag:(BOOL)willRetainFlag
327  withClientId:(NSString *)clientId;
328 
331 - (void)connectToLast;
332 
343 - (UInt16)sendData:(NSData *)data topic:(NSString *)topic qos:(MQTTQosLevel)qos retain:(BOOL)retainFlag;
344 
347 - (void)disconnect;
348 
349 @end
NSString * host
Definition: MQTTSessionManager.h:87
Definition: MQTTSSLSecurityPolicy.h:89
NSDictionary< NSString *, NSNumber * > * effectiveSubscriptions
Definition: MQTTSessionManager.h:135
NSDictionary< NSString *, NSNumber * > * subscriptions
Definition: MQTTSessionManager.h:104
Definition: MQTTSession.h:284
UInt32 port
Definition: MQTTSessionManager.h:91
NSError * lastErrorCode
Definition: MQTTSessionManager.h:143
Definition: MQTTSessionManager.h:79
MQTTSession * session
Definition: MQTTSessionManager.h:83
id< MQTTSessionManagerDelegate > delegate
Definition: MQTTSessionManager.h:95
MQTTSessionManagerState state
Definition: MQTTSessionManager.h:139