1// Copyright 2014 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 COMPONENTS_GCM_DRIVER_GCM_ACTIVITY_H_
6#define COMPONENTS_GCM_DRIVER_GCM_ACTIVITY_H_
7
8#include <string>
9#include <vector>
10
11#include "base/time/time.h"
12
13namespace gcm {
14
15// Contains data that are common to all activity kinds below.
16struct Activity {
17  Activity();
18  virtual ~Activity();
19
20  base::Time time;
21  std::string event;    // A short description of the event.
22  std::string details;  // Any additional detail about the event.
23};
24
25// Contains relevant data of a connection activity.
26struct ConnectionActivity : Activity {
27  ConnectionActivity();
28  virtual ~ConnectionActivity();
29};
30
31// Contains relevant data of a check-in activity.
32struct CheckinActivity : Activity {
33  CheckinActivity();
34  virtual ~CheckinActivity();
35};
36
37// Contains relevant data of a registration/unregistration step.
38struct RegistrationActivity : Activity {
39  RegistrationActivity();
40  virtual ~RegistrationActivity();
41
42  std::string app_id;
43  std::string sender_ids;  // Comma separated sender ids.
44};
45
46// Contains relevant data of a message receiving event.
47struct ReceivingActivity : Activity {
48  ReceivingActivity();
49  virtual ~ReceivingActivity();
50
51  std::string app_id;
52  std::string from;
53  int message_byte_size;
54};
55
56// Contains relevant data of a send-message step.
57struct SendingActivity : Activity {
58  SendingActivity();
59  virtual ~SendingActivity();
60
61  std::string app_id;
62  std::string receiver_id;
63  std::string message_id;
64};
65
66struct RecordedActivities {
67  RecordedActivities();
68  virtual ~RecordedActivities();
69
70  std::vector<CheckinActivity> checkin_activities;
71  std::vector<ConnectionActivity> connection_activities;
72  std::vector<RegistrationActivity> registration_activities;
73  std::vector<ReceivingActivity> receiving_activities;
74  std::vector<SendingActivity> sending_activities;
75};
76
77}  // namespace gcm
78
79#endif  // COMPONENTS_GCM_DRIVER_GCM_ACTIVITY_H_
80