Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
mbed-mqtt-master/paho_mqtt-sn_embedded_c/MQTTSNGateway/src/MQTTSNGWAggregateTopicTable.h@0:ba7e439238ab, 2022-06-20 (annotated)
- Committer:
- pavleradojkovic
- Date:
- Mon Jun 20 16:24:43 2022 +0000
- Revision:
- 0:ba7e439238ab
Inital commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| pavleradojkovic | 0:ba7e439238ab | 1 | /************************************************************************************** |
| pavleradojkovic | 0:ba7e439238ab | 2 | * Copyright (c) 2018, 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 | **************************************************************************************/ |
| pavleradojkovic | 0:ba7e439238ab | 16 | |
| pavleradojkovic | 0:ba7e439238ab | 17 | #ifndef MQTTSNGATEWAY_SRC_MQTTSNGWAGGREGATETOPICTABLE_H_ |
| pavleradojkovic | 0:ba7e439238ab | 18 | #define MQTTSNGATEWAY_SRC_MQTTSNGWAGGREGATETOPICTABLE_H_ |
| pavleradojkovic | 0:ba7e439238ab | 19 | |
| pavleradojkovic | 0:ba7e439238ab | 20 | #include "MQTTSNGWDefines.h" |
| pavleradojkovic | 0:ba7e439238ab | 21 | #include "MQTTSNGWProcess.h" |
| pavleradojkovic | 0:ba7e439238ab | 22 | #include <stdint.h> |
| pavleradojkovic | 0:ba7e439238ab | 23 | namespace MQTTSNGW |
| pavleradojkovic | 0:ba7e439238ab | 24 | { |
| pavleradojkovic | 0:ba7e439238ab | 25 | |
| pavleradojkovic | 0:ba7e439238ab | 26 | class Client; |
| pavleradojkovic | 0:ba7e439238ab | 27 | class Topic; |
| pavleradojkovic | 0:ba7e439238ab | 28 | class AggregateTopicElement; |
| pavleradojkovic | 0:ba7e439238ab | 29 | class ClientTopicElement; |
| pavleradojkovic | 0:ba7e439238ab | 30 | class Mutex; |
| pavleradojkovic | 0:ba7e439238ab | 31 | |
| pavleradojkovic | 0:ba7e439238ab | 32 | /*===================================== |
| pavleradojkovic | 0:ba7e439238ab | 33 | Class AggregateTopicTable |
| pavleradojkovic | 0:ba7e439238ab | 34 | ======================================*/ |
| pavleradojkovic | 0:ba7e439238ab | 35 | class AggregateTopicTable |
| pavleradojkovic | 0:ba7e439238ab | 36 | { |
| pavleradojkovic | 0:ba7e439238ab | 37 | public: |
| pavleradojkovic | 0:ba7e439238ab | 38 | AggregateTopicTable(); |
| pavleradojkovic | 0:ba7e439238ab | 39 | ~AggregateTopicTable(); |
| pavleradojkovic | 0:ba7e439238ab | 40 | |
| pavleradojkovic | 0:ba7e439238ab | 41 | AggregateTopicElement* add(Topic* topic, Client* client); |
| pavleradojkovic | 0:ba7e439238ab | 42 | AggregateTopicElement* getClientList(Topic* client); |
| pavleradojkovic | 0:ba7e439238ab | 43 | void remove(Topic* topic, Client* client); |
| pavleradojkovic | 0:ba7e439238ab | 44 | void clear(void); |
| pavleradojkovic | 0:ba7e439238ab | 45 | private: |
| pavleradojkovic | 0:ba7e439238ab | 46 | AggregateTopicElement* _head {nullptr}; |
| pavleradojkovic | 0:ba7e439238ab | 47 | AggregateTopicElement* _tail {nullptr}; |
| pavleradojkovic | 0:ba7e439238ab | 48 | int _cnt {0}; |
| pavleradojkovic | 0:ba7e439238ab | 49 | int _maxSize {MAX_MESSAGEID_TABLE_SIZE}; |
| pavleradojkovic | 0:ba7e439238ab | 50 | }; |
| pavleradojkovic | 0:ba7e439238ab | 51 | |
| pavleradojkovic | 0:ba7e439238ab | 52 | /*===================================== |
| pavleradojkovic | 0:ba7e439238ab | 53 | Class AggregateTopicElement |
| pavleradojkovic | 0:ba7e439238ab | 54 | =====================================*/ |
| pavleradojkovic | 0:ba7e439238ab | 55 | class AggregateTopicElement |
| pavleradojkovic | 0:ba7e439238ab | 56 | { |
| pavleradojkovic | 0:ba7e439238ab | 57 | friend class AggregateTopicTable; |
| pavleradojkovic | 0:ba7e439238ab | 58 | public: |
| pavleradojkovic | 0:ba7e439238ab | 59 | AggregateTopicElement(void); |
| pavleradojkovic | 0:ba7e439238ab | 60 | AggregateTopicElement(Topic* topic, Client* client); |
| pavleradojkovic | 0:ba7e439238ab | 61 | ~AggregateTopicElement(void); |
| pavleradojkovic | 0:ba7e439238ab | 62 | |
| pavleradojkovic | 0:ba7e439238ab | 63 | ClientTopicElement* add(Client* client); |
| pavleradojkovic | 0:ba7e439238ab | 64 | ClientTopicElement* getFirstElement(void); |
| pavleradojkovic | 0:ba7e439238ab | 65 | ClientTopicElement* getNextElement(ClientTopicElement* elm); |
| pavleradojkovic | 0:ba7e439238ab | 66 | void erase(ClientTopicElement* elm); |
| pavleradojkovic | 0:ba7e439238ab | 67 | ClientTopicElement* find(Client* client); |
| pavleradojkovic | 0:ba7e439238ab | 68 | |
| pavleradojkovic | 0:ba7e439238ab | 69 | private: |
| pavleradojkovic | 0:ba7e439238ab | 70 | Mutex _mutex; |
| pavleradojkovic | 0:ba7e439238ab | 71 | Topic* _topic {nullptr}; |
| pavleradojkovic | 0:ba7e439238ab | 72 | ClientTopicElement* _head {nullptr}; |
| pavleradojkovic | 0:ba7e439238ab | 73 | ClientTopicElement* _tail {nullptr}; |
| pavleradojkovic | 0:ba7e439238ab | 74 | }; |
| pavleradojkovic | 0:ba7e439238ab | 75 | |
| pavleradojkovic | 0:ba7e439238ab | 76 | /*===================================== |
| pavleradojkovic | 0:ba7e439238ab | 77 | Class ClientTopicElement |
| pavleradojkovic | 0:ba7e439238ab | 78 | =====================================*/ |
| pavleradojkovic | 0:ba7e439238ab | 79 | class ClientTopicElement |
| pavleradojkovic | 0:ba7e439238ab | 80 | { |
| pavleradojkovic | 0:ba7e439238ab | 81 | friend class AggregateTopicTable; |
| pavleradojkovic | 0:ba7e439238ab | 82 | friend class AggregateTopicElement; |
| pavleradojkovic | 0:ba7e439238ab | 83 | public: |
| pavleradojkovic | 0:ba7e439238ab | 84 | ClientTopicElement(Client* client); |
| pavleradojkovic | 0:ba7e439238ab | 85 | ~ClientTopicElement(void); |
| pavleradojkovic | 0:ba7e439238ab | 86 | Client* getClient(void); |
| pavleradojkovic | 0:ba7e439238ab | 87 | |
| pavleradojkovic | 0:ba7e439238ab | 88 | private: |
| pavleradojkovic | 0:ba7e439238ab | 89 | Client* _client {nullptr}; |
| pavleradojkovic | 0:ba7e439238ab | 90 | ClientTopicElement* _next {nullptr}; |
| pavleradojkovic | 0:ba7e439238ab | 91 | ClientTopicElement* _prev {nullptr}; |
| pavleradojkovic | 0:ba7e439238ab | 92 | }; |
| pavleradojkovic | 0:ba7e439238ab | 93 | |
| pavleradojkovic | 0:ba7e439238ab | 94 | } |
| pavleradojkovic | 0:ba7e439238ab | 95 | |
| pavleradojkovic | 0:ba7e439238ab | 96 | |
| pavleradojkovic | 0:ba7e439238ab | 97 | |
| pavleradojkovic | 0:ba7e439238ab | 98 | #endif /* MQTTSNGATEWAY_SRC_MQTTSNGWAGGREGATETOPICTABLE_H_ */ |