An API for using MQTT over multiple transports
Fork of MQTT by
Diff: MQTTClient.h
- Revision:
- 6:4d312a49200b
- Parent:
- 5:389ccac5a50c
- Child:
- 8:c46930bd6c82
--- a/MQTTClient.h Mon Apr 07 23:52:57 2014 +0100 +++ b/MQTTClient.h Tue Apr 08 22:54:37 2014 +0000 @@ -1,33 +1,30 @@ -/** - * @file MQTTPubSub.h - * @brief API - for MQTT - * @author - * @version 1.0 - * @see +/******************************************************************************* + * Copyright (c) 2014 IBM Corp. * - * Copyright (c) 2014 + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 + * The Eclipse Public License is available at + * http://www.eclipse.org/legal/epl-v10.html + * and the Eclipse Distribution License is available at + * http://www.eclipse.org/org/documents/edl-v10.php. * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ + * Contributors: + * Ian Craggs - initial API and implementation and/or initial documentation + *******************************************************************************/ #if !defined(MQTTCLIENT_H) #define MQTTCLIENT_H #include "FP.h" #include "MQTTPacket.h" +#include "stdio.h" namespace MQTT { + +const int MAX_PACKET_ID = 65535; enum QoS { QOS0, QOS1, QOS2 }; @@ -43,27 +40,27 @@ size_t payloadlen; }; -template<class Network, class Thread> class Client; +template<class Network, class Timer, class Thread> class Client; class Result { /* success or failure result data */ - Client<class Network, class Thread>* client; + Client<class Network, class Timer, class Thread>* client; }; -template<class Network, class Thread> class Client +template<class Network, class Timer, class Thread> class Client { public: - Client(Network* network, const int buffer_size = 100, const int command_timeout = 30); + Client(Network* network, Timer* timer, const int buffer_size = 100, const int command_timeout = 30); int connect(MQTTPacket_connectData* options = 0, FP<void, Result*> *resultHandler = 0); - int publish(char* topic, Message* message, FP<void, Result*> *resultHandler = 0); + int publish(const char* topic, Message* message, FP<void, Result*> *resultHandler = 0); - int subscribe(char* topicFilter, int qos, FP<void, Message*> messageHandler, FP<void, Result*> *resultHandler = 0); + int subscribe(const char* topicFilter, enum QoS qos, FP<void, Message*> messageHandler, FP<void, Result*> *resultHandler = 0); int unsubscribe(char* topicFilter, FP<void, Result*> *resultHandler = 0); @@ -71,14 +68,16 @@ private: + int getPacketId(); int cycle(); int decodePacket(int* value, int timeout); int readPacket(int timeout = -1); - int sendPacket(int length); + int sendPacket(int length, int timeout = -1); Thread* thread; Network* ipstack; + Timer* timer; char* buf; int buflen; @@ -86,7 +85,9 @@ char* readbuf; int readbuflen; - int command_timeout; + int command_timeout; // max time to wait for any MQTT command to complete, in seconds + int keepalive; + int packetid; };