1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef JINGLE_NOTIFIER_LISTENER_NOTIFICATION_DEFINES_H_
6#define JINGLE_NOTIFIER_LISTENER_NOTIFICATION_DEFINES_H_
7
8#include <string>
9#include <vector>
10
11namespace notifier {
12
13struct Subscription {
14  Subscription();
15  ~Subscription();
16  bool Equals(const Subscription& other) const;
17
18  // The name of the channel to subscribe to; usually but not always
19  // a URL.
20  std::string channel;
21  // A sender, which could be a domain or a bare JID, from which we
22  // will accept pushes.
23  std::string from;
24};
25
26typedef std::vector<Subscription> SubscriptionList;
27
28bool SubscriptionListsEqual(const SubscriptionList& subscriptions1,
29                            const SubscriptionList& subscriptions2);
30
31// A structure representing a <recipient/> block within a push message.
32struct Recipient {
33  Recipient();
34  ~Recipient();
35  bool Equals(const Recipient& other) const;
36
37  // The bare jid of the recipient.
38  std::string to;
39  // User-specific data for the recipient.
40  std::string user_specific_data;
41};
42
43typedef std::vector<Recipient> RecipientList;
44
45bool RecipientListsEqual(const RecipientList& recipients1,
46                         const RecipientList& recipients2);
47
48struct Notification {
49  Notification();
50  ~Notification();
51
52  // The channel the notification is coming in on.
53  std::string channel;
54  // Recipients for this notification (may be empty).
55  RecipientList recipients;
56  // The notification data payload.
57  std::string data;
58
59  bool Equals(const Notification& other) const;
60  std::string ToString() const;
61};
62
63}  // namespace notifier
64
65#endif  // JINGLE_NOTIFIER_LISTENER_NOTIFICATION_DEFINES_H_
66