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 
22 namespace gloox
23 {
27  namespace PubSub
28  {
29 
30  class Item;
31 
35  enum NodeType
36  {
37  NodeLeaf,
43  };
44 
49  {
55  };
56 
61  {
76  };
77 
81  enum EventType
82  {
91  };
92 
97  {
100  };
101 
106  {
107  AccessOpen,
114  AccessRoster,
128  };
129 
134  {
137  FeatureCreateAndConfig = 1<<2,
140  FeatureDeleteAny = 1<<4,
143  FeatureGetPending = 1<<6,
146  FeatureItemIDs = 1<<8,
149  FeatureMetaData = 1<<11,
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 
193  struct Subscriber
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 
207  struct Affiliate
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 
222  struct TrackedInfo
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__
gloox::PubSub::EventUnknown
@ EventUnknown
Definition: pubsub.h:90
gloox::PubSub::FeatureSubscriptionNotifs
@ FeatureSubscriptionNotifs
Definition: pubsub.h:174
gloox::PubSub::FeatureConfigNode
@ FeatureConfigNode
Definition: pubsub.h:136
gloox::PubSub::EventCollection
@ EventCollection
Definition: pubsub.h:83
gloox::PubSub::AccessDefault
@ AccessDefault
Definition: pubsub.h:126
gloox::PubSub::FeatureRetrieveDefault
@ FeatureRetrieveDefault
Definition: pubsub.h:166
gloox::PubSub::FeatureDeleteNodes
@ FeatureDeleteNodes
Definition: pubsub.h:142
gloox::PubSub::AffiliationOwner
@ AffiliationOwner
Definition: pubsub.h:52
gloox::PubSub::FeaturePutcastAffiliation
@ FeaturePutcastAffiliation
Definition: pubsub.h:155
gloox::PubSub::FeatureRetrieveSubscriptions
@ FeatureRetrieveSubscriptions
Definition: pubsub.h:169
gloox::PubSub::FeatureManageSubscriptions
@ FeatureManageSubscriptions
Definition: pubsub.h:148
gloox::PubSub::SubscriptionNone
@ SubscriptionNone
Definition: pubsub.h:62
gloox::PubSub::Item
Abstracts a PubSub Item (XEP-0060).
Definition: pubsubitem.h:38
gloox::PubSub::AccessPresence
@ AccessPresence
Definition: pubsub.h:111
gloox::PubSub::EventItems
@ EventItems
Definition: pubsub.h:86
gloox::PubSub::FeatureRetrieveItems
@ FeatureRetrieveItems
Definition: pubsub.h:168
gloox::PubSub::NodeType
NodeType
Definition: pubsub.h:36
gloox::PubSub::AffiliationOutcast
@ AffiliationOutcast
Definition: pubsub.h:53
gloox::PubSub::FeaturePurgeNodes
@ FeaturePurgeNodes
Definition: pubsub.h:162
gloox::PubSub::FeatureCreateAndConfig
@ FeatureCreateAndConfig
Definition: pubsub.h:137
gloox::PubSub::FeatureLeasedSubscription
@ FeatureLeasedSubscription
Definition: pubsub.h:147
gloox::PubSub::SubscriptionInvalid
@ SubscriptionInvalid
Definition: pubsub.h:75
gloox::PubSub::SubscriptionPending
@ SubscriptionPending
Definition: pubsub.h:67
gloox::PubSub::AccessWhitelist
@ AccessWhitelist
Definition: pubsub.h:119
gloox::PubSub::Affiliate
Definition: pubsub.h:208
gloox::PubSub::SubscriptionInfo
Definition: pubsub.h:234
gloox::PubSub::FeatureRetractItems
@ FeatureRetractItems
Definition: pubsub.h:163
gloox::PubSub::AccessOpen
@ AccessOpen
Definition: pubsub.h:107
gloox::PubSub::PubSubFeature
PubSubFeature
Definition: pubsub.h:134
gloox::PubSub::AccessAuthorize
@ AccessAuthorize
Definition: pubsub.h:117
gloox::PubSub::NodeLeaf
@ NodeLeaf
Definition: pubsub.h:37
gloox::PubSub::SubscriptionSubscribed
@ SubscriptionSubscribed
Definition: pubsub.h:64
gloox::JID
An abstraction of a JID.
Definition: jid.h:31
gloox::PubSub::FeatureDeleteAny
@ FeatureDeleteAny
Definition: pubsub.h:140
gloox::PubSub::FeatureModifyAffiliations
@ FeatureModifyAffiliations
Definition: pubsub.h:150
gloox::PubSub::SubscriptionItems
@ SubscriptionItems
Definition: pubsub.h:99
gloox
The namespace for the gloox library.
Definition: adhoc.cpp:28
gloox::PubSub::AccessRoster
@ AccessRoster
Definition: pubsub.h:114
gloox::PubSub::FeatureSubscriptionOptions
@ FeatureSubscriptionOptions
Definition: pubsub.h:172
gloox::PubSub::FeatureMetaData
@ FeatureMetaData
Definition: pubsub.h:149
gloox::PubSub::AffiliationPublisher
@ AffiliationPublisher
Definition: pubsub.h:51
gloox::PubSub::AffiliationType
AffiliationType
Definition: pubsub.h:49
gloox::PubSub::AccessModel
AccessModel
Definition: pubsub.h:106
gloox::PubSub::SubscriptionNodes
@ SubscriptionNodes
Definition: pubsub.h:98
gloox::PubSub::AffiliationInvalid
@ AffiliationInvalid
Definition: pubsub.h:54
gloox::PubSub::SubscriptionObject
SubscriptionObject
Definition: pubsub.h:97
gloox::PubSub::FeaturePresenceNotifications
@ FeaturePresenceNotifications
Definition: pubsub.h:157
gloox::PubSub::FeaturePublish
@ FeaturePublish
Definition: pubsub.h:159
gloox::PubSub::SubscriptionType
SubscriptionType
Definition: pubsub.h:61
gloox::PubSub::FeatureUnknown
@ FeatureUnknown
Definition: pubsub.h:175
gloox::PubSub::FeatureSubscribe
@ FeatureSubscribe
Definition: pubsub.h:171
gloox::PubSub::FeatureGetPending
@ FeatureGetPending
Definition: pubsub.h:143
gloox::PubSub::FeatureItemIDs
@ FeatureItemIDs
Definition: pubsub.h:146
gloox::PubSub::FeatureRetrieveAffiliations
@ FeatureRetrieveAffiliations
Definition: pubsub.h:164
gloox::PubSub::SubscriptionUnconfigured
@ SubscriptionUnconfigured
Definition: pubsub.h:71
gloox::PubSub::EventPurge
@ EventPurge
Definition: pubsub.h:88
gloox::EmptyString
const std::string EmptyString
Definition: gloox.cpp:124
gloox::PubSub::EventSubscription
@ EventSubscription
Definition: pubsub.h:89
gloox::PubSub::Subscriber
Definition: pubsub.h:194
gloox::PubSub::FeatureCreateNodes
@ FeatureCreateNodes
Definition: pubsub.h:139
gloox::PubSub::AffiliationNone
@ AffiliationNone
Definition: pubsub.h:50
gloox::PubSub::FeaturePublisherAffiliation
@ FeaturePublisherAffiliation
Definition: pubsub.h:161
gloox::PubSub::FeatureInstantNodes
@ FeatureInstantNodes
Definition: pubsub.h:145
gloox::PubSub::EventItemsRetract
@ EventItemsRetract
Definition: pubsub.h:87
gloox::PubSub::EventType
EventType
Definition: pubsub.h:82
gloox::PubSub::FeatureCollections
@ FeatureCollections
Definition: pubsub.h:135
gloox::PubSub::FeatureMultiCollection
@ FeatureMultiCollection
Definition: pubsub.h:151
gloox::PubSub::FeatureMultiSubscribe
@ FeatureMultiSubscribe
Definition: pubsub.h:153
gloox::PubSub::EventDelete
@ EventDelete
Definition: pubsub.h:85
gloox::PubSub::TrackedInfo
Definition: pubsub.h:223
gloox::PubSub::FeaturePersistentItems
@ FeaturePersistentItems
Definition: pubsub.h:156
gloox::PubSub::NodeInvalid
@ NodeInvalid
Definition: pubsub.h:42
gloox::PubSub::NodeCollection
@ NodeCollection
Definition: pubsub.h:39
gloox::PubSub::EventConfigure
@ EventConfigure
Definition: pubsub.h:84