gloox 1.0.24
pubsub.h
1/*
2 Copyright (c) 2007-2019 by Jakob Schröter <js@camaya.net>
3 This file is part of the gloox library. http://camaya.net/gloox
4
5 This software is distributed under a license. The full license
6 agreement can be found in the file LICENSE in this distribution.
7 This software may not be copied, modified, sold or distributed
8 other than expressed in the named license agreement.
9
10 This software is distributed without any warranty.
11*/
12
13#ifndef PUBSUB_H__
14#define PUBSUB_H__
15
16#include <map>
17#include <string>
18
19#include "gloox.h"
20#include "jid.h"
21
22namespace gloox
23{
27 namespace PubSub
28 {
29
30 class Item;
31
36 {
37 NodeLeaf,
43 };
44
49 {
55 };
56
61 {
76 };
77
82 {
91 };
92
97 {
100 };
101
106 {
107 AccessOpen,
128 };
129
134 {
140 FeatureDeleteAny = 1<<4,
143 FeatureGetPending = 1<<6,
151 FeatureMultiCollection = 1<<13,
153 FeatureMultiSubscribe = 1<<14,
159 FeaturePublish = 1<<18,
166 FeatureRetrieveDefault = 1<<23,
175 FeatureUnknown = 1<<29
176 };
177
178// [Persistent - Notification]
179/* Publisher MUST include an &lt;item/&gt; element, which MAY be empty or contain a payload; if item ID is not provided by publisher, it MUST be generated by pubsub service */
180
181// [Persistent - Payload]
182/* Publisher MUST include an &lt;item/&gt; element that contains the payload; if item ID is not provided by publisher, it MUST be generated by pubsub service */
183
184// [Transient - Notification]
185/* Publisher MUST NOT include an &lt;item/&gt; element (therefore item ID is neither provided nor generated) but the notification will include an empty &lt;items/&gt; element */
186
187// [Transient - Payload]
188/* Publisher MUST include an &lt;item/&gt; element that contains the payload, but the item ID is OPTIONAL */
189
194 {
195 Subscriber( const JID& _jid,
196 SubscriptionType _type,
197 const std::string& _subid = EmptyString)
198 : jid( _jid ), type( _type ), subid( _subid ) {}
199 JID jid;
200 SubscriptionType type;
201 std::string subid;
202 };
203
208 {
209 Affiliate( const JID& _jid, AffiliationType _type )
210 : jid( _jid ), type( _type ) {}
211 JID jid;
212 AffiliationType type;
213 };
214
215 typedef std::list<Subscriber> SubscriberList;
216 typedef std::list<Affiliate> AffiliateList;
217
223 {
224 JID service;
225 std::string node;
226 std::string item;
227 std::string sid;
228 };
229
234 {
235 SubscriptionType type;
236 JID jid;
237 std::string subid;
238 };
239
240 typedef std::list<SubscriptionInfo> SubscriptionList;
241 typedef std::map<std::string, SubscriptionList> SubscriptionMap;
242 typedef std::map<std::string, AffiliationType> AffiliationMap;
243 typedef std::list<Item*> ItemList;
244
245 }
246
247}
248
249#endif // PUBSUB_H__
An abstraction of a JID.
Definition: jid.h:31
Abstracts a PubSub Item (XEP-0060).
Definition: pubsubitem.h:38
SubscriptionObject
Definition: pubsub.h:97
@ SubscriptionItems
Definition: pubsub.h:99
@ SubscriptionNodes
Definition: pubsub.h:98
@ EventItems
Definition: pubsub.h:86
@ EventCollection
Definition: pubsub.h:83
@ EventPurge
Definition: pubsub.h:88
@ EventDelete
Definition: pubsub.h:85
@ EventItemsRetract
Definition: pubsub.h:87
@ EventUnknown
Definition: pubsub.h:90
@ EventSubscription
Definition: pubsub.h:89
@ EventConfigure
Definition: pubsub.h:84
@ AccessPresence
Definition: pubsub.h:111
@ AccessDefault
Definition: pubsub.h:126
@ AccessRoster
Definition: pubsub.h:114
@ AccessWhitelist
Definition: pubsub.h:119
@ AccessAuthorize
Definition: pubsub.h:117
SubscriptionType
Definition: pubsub.h:61
@ SubscriptionPending
Definition: pubsub.h:67
@ SubscriptionInvalid
Definition: pubsub.h:75
@ SubscriptionNone
Definition: pubsub.h:62
@ SubscriptionSubscribed
Definition: pubsub.h:64
@ SubscriptionUnconfigured
Definition: pubsub.h:71
@ AffiliationInvalid
Definition: pubsub.h:54
@ AffiliationOwner
Definition: pubsub.h:52
@ AffiliationPublisher
Definition: pubsub.h:51
@ AffiliationNone
Definition: pubsub.h:50
@ AffiliationOutcast
Definition: pubsub.h:53
@ NodeInvalid
Definition: pubsub.h:42
@ NodeCollection
Definition: pubsub.h:39
@ FeatureRetrieveAffiliations
Definition: pubsub.h:164
@ FeatureModifyAffiliations
Definition: pubsub.h:150
@ FeaturePublisherAffiliation
Definition: pubsub.h:161
@ FeatureGetPending
Definition: pubsub.h:143
@ FeatureConfigNode
Definition: pubsub.h:136
@ FeatureMultiSubscribe
Definition: pubsub.h:153
@ FeatureRetrieveDefault
Definition: pubsub.h:166
@ FeatureUnknown
Definition: pubsub.h:175
@ FeatureCreateAndConfig
Definition: pubsub.h:137
@ FeatureMultiCollection
Definition: pubsub.h:151
@ FeatureCollections
Definition: pubsub.h:135
@ FeatureItemIDs
Definition: pubsub.h:146
@ FeatureSubscriptionOptions
Definition: pubsub.h:172
@ FeatureRetrieveSubscriptions
Definition: pubsub.h:169
@ FeaturePresenceNotifications
Definition: pubsub.h:157
@ FeaturePublish
Definition: pubsub.h:159
@ FeatureLeasedSubscription
Definition: pubsub.h:147
@ FeatureDeleteNodes
Definition: pubsub.h:142
@ FeaturePersistentItems
Definition: pubsub.h:156
@ FeatureManageSubscriptions
Definition: pubsub.h:148
@ FeatureCreateNodes
Definition: pubsub.h:139
@ FeaturePurgeNodes
Definition: pubsub.h:162
@ FeatureSubscriptionNotifs
Definition: pubsub.h:174
@ FeatureMetaData
Definition: pubsub.h:149
@ FeaturePutcastAffiliation
Definition: pubsub.h:155
@ FeatureRetrieveItems
Definition: pubsub.h:168
@ FeatureDeleteAny
Definition: pubsub.h:140
@ FeatureSubscribe
Definition: pubsub.h:171
@ FeatureInstantNodes
Definition: pubsub.h:145
@ FeatureRetractItems
Definition: pubsub.h:163
The namespace for the gloox library.
Definition: adhoc.cpp:28
const std::string EmptyString
Definition: gloox.cpp:124