Pavle Radojkovic / mbed-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) 2016, Tomoaki Yamaguchi
pavleradojkovic 0:ba7e439238ab 3 *
pavleradojkovic 0:ba7e439238ab 4 * All rights reserved. This program and the accompanying materials
pavleradojkovic 0:ba7e439238ab 5 * are made available under the terms of the Eclipse Public License v1.0
pavleradojkovic 0:ba7e439238ab 6 * and Eclipse Distribution License v1.0 which accompany this distribution.
pavleradojkovic 0:ba7e439238ab 7 *
pavleradojkovic 0:ba7e439238ab 8 * The Eclipse Public License is available at
pavleradojkovic 0:ba7e439238ab 9 * http://www.eclipse.org/legal/epl-v10.html
pavleradojkovic 0:ba7e439238ab 10 * and the Eclipse Distribution License is available at
pavleradojkovic 0:ba7e439238ab 11 * http://www.eclipse.org/org/documents/edl-v10.php.
pavleradojkovic 0:ba7e439238ab 12 *
pavleradojkovic 0:ba7e439238ab 13 * Contributors:
pavleradojkovic 0:ba7e439238ab 14 * Tomoaki Yamaguchi - initial API and implementation and/or initial documentation
pavleradojkovic 0:ba7e439238ab 15 * Tieto Poland Sp. z o.o. - Gateway improvements
pavleradojkovic 0:ba7e439238ab 16 **************************************************************************************/
pavleradojkovic 0:ba7e439238ab 17
pavleradojkovic 0:ba7e439238ab 18 #ifndef MQTTSNGATEWAY_SRC_MQTTSNGWCLIENTLIST_H_
pavleradojkovic 0:ba7e439238ab 19 #define MQTTSNGATEWAY_SRC_MQTTSNGWCLIENTLIST_H_
pavleradojkovic 0:ba7e439238ab 20
pavleradojkovic 0:ba7e439238ab 21 #include "MQTTSNGWClient.h"
pavleradojkovic 0:ba7e439238ab 22 #include "MQTTSNGateway.h"
pavleradojkovic 0:ba7e439238ab 23
pavleradojkovic 0:ba7e439238ab 24 namespace MQTTSNGW
pavleradojkovic 0:ba7e439238ab 25 {
pavleradojkovic 0:ba7e439238ab 26 #define TRANSPEARENT_TYPE 0
pavleradojkovic 0:ba7e439238ab 27 #define QOSM1PROXY_TYPE 1
pavleradojkovic 0:ba7e439238ab 28 #define AGGREGATER_TYPE 2
pavleradojkovic 0:ba7e439238ab 29 #define FORWARDER_TYPE 3
pavleradojkovic 0:ba7e439238ab 30
pavleradojkovic 0:ba7e439238ab 31 class Client;
pavleradojkovic 0:ba7e439238ab 32
pavleradojkovic 0:ba7e439238ab 33 /*=====================================
pavleradojkovic 0:ba7e439238ab 34 Class ClientList
pavleradojkovic 0:ba7e439238ab 35 =====================================*/
pavleradojkovic 0:ba7e439238ab 36 class ClientList
pavleradojkovic 0:ba7e439238ab 37 {
pavleradojkovic 0:ba7e439238ab 38 public:
pavleradojkovic 0:ba7e439238ab 39 ClientList();
pavleradojkovic 0:ba7e439238ab 40 ~ClientList();
pavleradojkovic 0:ba7e439238ab 41
pavleradojkovic 0:ba7e439238ab 42 void initialize(bool aggregate);
pavleradojkovic 0:ba7e439238ab 43 void setClientList(int type);
pavleradojkovic 0:ba7e439238ab 44 void setPredefinedTopics(bool aggregate);
pavleradojkovic 0:ba7e439238ab 45 void erase(Client*&);
pavleradojkovic 0:ba7e439238ab 46 Client* createClient(SensorNetAddress* addr, MQTTSNString* clientId,int type);
pavleradojkovic 0:ba7e439238ab 47 Client* createClient(SensorNetAddress* addr, MQTTSNString* clientId, bool unstableLine, bool secure, int type);
pavleradojkovic 0:ba7e439238ab 48 bool createList(const char* fileName, int type);
pavleradojkovic 0:ba7e439238ab 49 Client* getClient(SensorNetAddress* addr);
pavleradojkovic 0:ba7e439238ab 50 Client* getClient(MQTTSNString* clientId);
pavleradojkovic 0:ba7e439238ab 51 Client* getClient(int index);
pavleradojkovic 0:ba7e439238ab 52 uint16_t getClientCount(void);
pavleradojkovic 0:ba7e439238ab 53 Client* getClient(void);
pavleradojkovic 0:ba7e439238ab 54 bool isAuthorized();
pavleradojkovic 0:ba7e439238ab 55
pavleradojkovic 0:ba7e439238ab 56 private:
pavleradojkovic 0:ba7e439238ab 57 bool readPredefinedList(const char* fileName, bool _aggregate);
pavleradojkovic 0:ba7e439238ab 58 Gateway* _gateway {nullptr};
pavleradojkovic 0:ba7e439238ab 59 Client* createPredefinedTopic( MQTTSNString* clientId, string topicName, uint16_t toipcId, bool _aggregate);
pavleradojkovic 0:ba7e439238ab 60 Client* _firstClient;
pavleradojkovic 0:ba7e439238ab 61 Client* _endClient;
pavleradojkovic 0:ba7e439238ab 62 Mutex _mutex;
pavleradojkovic 0:ba7e439238ab 63 uint16_t _clientCnt;
pavleradojkovic 0:ba7e439238ab 64 bool _authorize {false};
pavleradojkovic 0:ba7e439238ab 65 };
pavleradojkovic 0:ba7e439238ab 66
pavleradojkovic 0:ba7e439238ab 67
pavleradojkovic 0:ba7e439238ab 68 }
pavleradojkovic 0:ba7e439238ab 69
pavleradojkovic 0:ba7e439238ab 70
pavleradojkovic 0:ba7e439238ab 71
pavleradojkovic 0:ba7e439238ab 72 #endif /* MQTTSNGATEWAY_SRC_MQTTSNGWCLIENTLIST_H_ */