// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_GCM_DRIVER_GCM_ACTIVITY_H_
#define COMPONENTS_GCM_DRIVER_GCM_ACTIVITY_H_
#include <string>
#include <vector>
#include "base/time/time.h"
namespace gcm {
// Contains data that are common to all activity kinds below.
struct Activity {
Activity();
virtual ~Activity();
base::Time time;
std::string event; // A short description of the event.
std::string details; // Any additional detail about the event.
};
// Contains relevant data of a connection activity.
struct ConnectionActivity : Activity {
ConnectionActivity();
virtual ~ConnectionActivity();
};
// Contains relevant data of a check-in activity.
struct CheckinActivity : Activity {
CheckinActivity();
virtual ~CheckinActivity();
};
// Contains relevant data of a registration/unregistration step.
struct RegistrationActivity : Activity {
RegistrationActivity();
virtual ~RegistrationActivity();
std::string app_id;
std::string sender_ids; // Comma separated sender ids.
};
// Contains relevant data of a message receiving event.
struct ReceivingActivity : Activity {
ReceivingActivity();
virtual ~ReceivingActivity();
std::string app_id;
std::string from;
int message_byte_size;
};
// Contains relevant data of a send-message step.
struct SendingActivity : Activity {
SendingActivity();
virtual ~SendingActivity();
std::string app_id;
std::string receiver_id;
std::string message_id;
};
struct RecordedActivities {
RecordedActivities();
virtual ~RecordedActivities();
std::vector<CheckinActivity> checkin_activities;
std::vector<ConnectionActivity> connection_activities;
std::vector<RegistrationActivity> registration_activities;
std::vector<ReceivingActivity> receiving_activities;
std::vector<SendingActivity> sending_activities;
};
} // namespace gcm
#endif // COMPONENTS_GCM_DRIVER_GCM_ACTIVITY_H_