// // MQTTSessionSynchron.h // MQTTClient.framework // /** Synchronous API @author Christoph Krey krey.christoph@gmail.com @copyright Copyright © 2013-2016, Christoph Krey */ #import #import "MQTTSession.h" @interface MQTTSession(Synchron) /** connects to the specified MQTT server synchronously @param timeout defines the maximum time to wait. Defaults to 0 for no timeout. @return true if the connection was established @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; @endcode */ - (BOOL)connectAndWaitTimeout:(NSTimeInterval)timeout; /** connects to the specified MQTT server synchronously @param host see connectAndWaitToHost:port:usingSSL:timeout: for details @param port see connectAndWaitToHost:port:usingSSL:timeout: for details @param usingSSL see connectAndWaitToHost:port:usingSSL:timeout: for details @return true if the connection was established @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitToHost:@"192.168.0.1" port:1883 usingSSL:NO]; @endcode @deprecated as not all connection parameters are supported, use connectAndWaitTimeout */ - (BOOL)connectAndWaitToHost:(NSString *)host port:(UInt32)port usingSSL:(BOOL)usingSSL; /** connects to the specified MQTT server synchronously @param host specifies the hostname or ip address to connect to. Defaults to @"localhost". @param port spefifies the port to connect to @param usingSSL specifies whether to use SSL or not @param timeout defines the maximum time to wait @return true if the connection was established @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitToHost:@"192.168.0.1" port:1883 usingSSL:NO]; @endcode @deprecated as not all connection parameters are supported, use connectAndWaitTimeout */ - (BOOL)connectAndWaitToHost:(NSString *)host port:(UInt32)port usingSSL:(BOOL)usingSSL timeout:(NSTimeInterval)timeout; /** subscribes to a topic at a specific QoS level synchronously @param topic the Topic Filter to subscribe to. @param qosLevel specifies the QoS Level of the subscription. qosLevel can be 0, 1, or 2. @return TRUE if successfully subscribed @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; [session subscribeAndWaitToTopic:@"example/#" atLevel:2]; @endcode */ - (BOOL)subscribeAndWaitToTopic:(NSString *)topic atLevel:(MQTTQosLevel)qosLevel; /** subscribes to a topic at a specific QoS level synchronously @param topic the Topic Filter to subscribe to. @param qosLevel specifies the QoS Level of the subscription. qosLevel can be 0, 1, or 2. @param timeout defines the maximum time to wait @return TRUE if successfully subscribed @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; [session subscribeAndWaitToTopic:@"example/#" atLevel:2 timeout:10]; @endcode */ - (BOOL)subscribeAndWaitToTopic:(NSString *)topic atLevel:(MQTTQosLevel)qosLevel timeout:(NSTimeInterval)timeout; /** subscribes a number of topics @param topics an NSDictionary containing the Topic Filters to subscribe to as keys and the corresponding QoS as NSNumber values @return the Message Identifier of the SUBSCRIBE message. @note returns immediately. To check results, register as an MQTTSessionDelegate and watch for events. @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; [session subscribeAndWaitToTopics:@{ @"example/#": @(0), @"example/status": @(2), @"other/#": @(1) }]; @endcode */ - (BOOL)subscribeAndWaitToTopics:(NSDictionary *)topics; /** subscribes a number of topics @param topics an NSDictionary containing the Topic Filters to subscribe to as keys and the corresponding QoS as NSNumber values @param timeout defines the maximum time to wait @return TRUE if the subscribe was succesfull @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; [session subscribeAndWaitToTopics:@{ @"example/#": @(0), @"example/status": @(2), @"other/#": @(1) } timeout:10]; @endcode */ - (BOOL)subscribeAndWaitToTopics:(NSDictionary *)topics timeout:(NSTimeInterval)timeout; /** unsubscribes from a topic synchronously @param topic the Topic Filter to unsubscribe from. @return TRUE if sucessfully unsubscribed @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; ... [session unsubscribeAndWaitTopic:@"example/#"]; @endcode */ - (BOOL)unsubscribeAndWaitTopic:(NSString *)topic; /** unsubscribes from a topic synchronously @param topic the Topic Filter to unsubscribe from. @param timeout defines the maximum time to wait @return TRUE if sucessfully unsubscribed @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; ... [session unsubscribeAndWaitTopic:@"example/#" timeout:10]; @endcode */ - (BOOL)unsubscribeAndWaitTopic:(NSString *)topic timeout:(NSTimeInterval)timeout; /** unsubscribes from a number of topics synchronously @param topics an NSArray of topics to unsubscribe from @return TRUE if the unsubscribe was successful @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; ... [session unsubscribeAndWaitTopics:@[ @"example/#", @"example/status", @"other/#" ]]; @endcode */ - (BOOL)unsubscribeAndWaitTopics:(NSArray *)topics; /** unsubscribes from a number of topics synchronously @param topics an NSArray of topics to unsubscribe from @param timeout defines the maximum time to wait @return TRUE if the unsubscribe was successful @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; ... [session unsubscribeAndWaitTopics:@[ @"example/#", @"example/status", @"other/#" ] timeout:10]; @endcode */ - (BOOL)unsubscribeAndWaitTopics:(NSArray *)topics timeout:(NSTimeInterval)timeout; /** publishes synchronously data @param data see publishAndWaitData:onTopic:retain:qos:timeout: for details @param topic see publishAndWaitData:onTopic:retain:qos:timeout: for details @param retainFlag see publishAndWaitData:onTopic:retain:qos:timeout: for details @param qos see publishAndWaitData:onTopic:retain:qos:timeout: for details @returns TRUE if the publish was successful @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; [session publishAndWaitData:[@"Sample Data" dataUsingEncoding:NSUTF8StringEncoding] topic:@"example/data" retain:YES qos:1]; @endcode */ - (BOOL)publishAndWaitData:(NSData *)data onTopic:(NSString *)topic retain:(BOOL)retainFlag qos:(MQTTQosLevel)qos; /** publishes synchronously data on a given topic at a specified QoS level and retain flag @param data the data to be sent. length may range from 0 to 268,435,455 - 4 - _lengthof-topic_ bytes. Defaults to length 0. @param topic the Topic to identify the data @param retainFlag if YES, data is stored on the MQTT broker until overwritten by the next publish with retainFlag = YES @param qos specifies the Quality of Service for the publish qos can be 0, 1, or 2. @param timeout defines the maximum time to wait @returns TRUE if the publish was successful @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; [session publishAndWaitData:[@"Sample Data" dataUsingEncoding:NSUTF8StringEncoding] topic:@"example/data" retain:YES qos:1 timeout:10]; @endcode */ - (BOOL)publishAndWaitData:(NSData *)data onTopic:(NSString *)topic retain:(BOOL)retainFlag qos:(MQTTQosLevel)qos timeout:(NSTimeInterval)timeout; /** closes an MQTTSession gracefully synchronously If the connection was successfully established before, a DISCONNECT is sent. @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; ... [session closeAndWait]; @endcode */ - (void)closeAndWait; /** closes an MQTTSession gracefully synchronously @param timeout defines the maximum time to wait If the connection was successfully established before, a DISCONNECT is sent. @code #import "MQTTClient.h" MQTTSession *session = [[MQTTSession alloc] init]; [session connectAndWaitTimeout:30]; ... [session closeAndWait:10]; @endcode */ - (void)closeAndWait:(NSTimeInterval)timeout; @end