Library for MQTT

Committer:
pavleradojkovic
Date:
Mon Jun 20 16:24:43 2022 +0000
Revision:
0:ba7e439238ab
Inital commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pavleradojkovic 0:ba7e439238ab 1 /*
pavleradojkovic 0:ba7e439238ab 2 * Copyright (c) 2019, ARM Limited, All Rights Reserved
pavleradojkovic 0:ba7e439238ab 3 * SPDX-License-Identifier: Apache-2.0
pavleradojkovic 0:ba7e439238ab 4 *
pavleradojkovic 0:ba7e439238ab 5 * Licensed under the Apache License, Version 2.0 (the "License"); you may
pavleradojkovic 0:ba7e439238ab 6 * not use this file except in compliance with the License.
pavleradojkovic 0:ba7e439238ab 7 * You may obtain a copy of the License at
pavleradojkovic 0:ba7e439238ab 8 *
pavleradojkovic 0:ba7e439238ab 9 * http://www.apache.org/licenses/LICENSE-2.0
pavleradojkovic 0:ba7e439238ab 10 *
pavleradojkovic 0:ba7e439238ab 11 * Unless required by applicable law or agreed to in writing, software
pavleradojkovic 0:ba7e439238ab 12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
pavleradojkovic 0:ba7e439238ab 13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
pavleradojkovic 0:ba7e439238ab 14 * See the License for the specific language governing permissions and
pavleradojkovic 0:ba7e439238ab 15 * limitations under the License.
pavleradojkovic 0:ba7e439238ab 16 */
pavleradojkovic 0:ba7e439238ab 17
pavleradojkovic 0:ba7e439238ab 18 #ifndef _MQTTNETWORKUDP_H_
pavleradojkovic 0:ba7e439238ab 19 #define _MQTTNETWORKUDP_H_
pavleradojkovic 0:ba7e439238ab 20
pavleradojkovic 0:ba7e439238ab 21 #include "UDPSocket.h"
pavleradojkovic 0:ba7e439238ab 22 #include "MQTTNetworkUtil.h"
pavleradojkovic 0:ba7e439238ab 23
pavleradojkovic 0:ba7e439238ab 24 class MQTTSNNetworkUDP {
pavleradojkovic 0:ba7e439238ab 25 public:
pavleradojkovic 0:ba7e439238ab 26 MQTTSNNetworkUDP(NetworkInterface *net) :
pavleradojkovic 0:ba7e439238ab 27 network(net)
pavleradojkovic 0:ba7e439238ab 28 {
pavleradojkovic 0:ba7e439238ab 29 socket = new UDPSocket();
pavleradojkovic 0:ba7e439238ab 30 }
pavleradojkovic 0:ba7e439238ab 31
pavleradojkovic 0:ba7e439238ab 32 ~MQTTSNNetworkUDP()
pavleradojkovic 0:ba7e439238ab 33 {
pavleradojkovic 0:ba7e439238ab 34 delete socket;
pavleradojkovic 0:ba7e439238ab 35 }
pavleradojkovic 0:ba7e439238ab 36
pavleradojkovic 0:ba7e439238ab 37 int read(unsigned char *buffer, int len, int timeout)
pavleradojkovic 0:ba7e439238ab 38 {
pavleradojkovic 0:ba7e439238ab 39 return accumulate_mqtt_read(socket, buffer, len, timeout);
pavleradojkovic 0:ba7e439238ab 40 }
pavleradojkovic 0:ba7e439238ab 41
pavleradojkovic 0:ba7e439238ab 42 int write(unsigned char *buffer, int len, int timeout)
pavleradojkovic 0:ba7e439238ab 43 {
pavleradojkovic 0:ba7e439238ab 44 return mqtt_write(socket, buffer, len, timeout);
pavleradojkovic 0:ba7e439238ab 45 }
pavleradojkovic 0:ba7e439238ab 46
pavleradojkovic 0:ba7e439238ab 47 int connect(const char *hostname, int port)
pavleradojkovic 0:ba7e439238ab 48 {
pavleradojkovic 0:ba7e439238ab 49 socket->open(network);
pavleradojkovic 0:ba7e439238ab 50 SocketAddress addr(hostname, port);
pavleradojkovic 0:ba7e439238ab 51 return socket->connect(addr);
pavleradojkovic 0:ba7e439238ab 52 }
pavleradojkovic 0:ba7e439238ab 53
pavleradojkovic 0:ba7e439238ab 54 int disconnect(void)
pavleradojkovic 0:ba7e439238ab 55 {
pavleradojkovic 0:ba7e439238ab 56 return 0;
pavleradojkovic 0:ba7e439238ab 57 }
pavleradojkovic 0:ba7e439238ab 58
pavleradojkovic 0:ba7e439238ab 59 private:
pavleradojkovic 0:ba7e439238ab 60 NetworkInterface *network;
pavleradojkovic 0:ba7e439238ab 61 UDPSocket *socket;
pavleradojkovic 0:ba7e439238ab 62 };
pavleradojkovic 0:ba7e439238ab 63
pavleradojkovic 0:ba7e439238ab 64 #endif // _MQTTNETWORKUDP_H_