Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: google_apis/gcm/monitoring/gcm_stats_recorder.h

Issue 312553002: Rename GCMStatsRecorder to GCMStatsRecorderImpl (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef GOOGLE_APIS_GCM_GCM_STATS_RECORDER_H_ 5 #ifndef GOOGLE_APIS_GCM_MONITORING_GCM_STATS_RECODER_H_
juyik 2014/06/02 19:19:04 RECODER -> RECORDER Same below.
jianli 2014/06/02 19:46:30 Done.
6 #define GOOGLE_APIS_GCM_GCM_STATS_RECORDER_H_ 6 #define GOOGLE_APIS_GCM_MONITORING_GCM_STATS_RECODER_H_
7 7
8 #include <deque>
9 #include <string> 8 #include <string>
10 #include <vector> 9 #include <vector>
11 10
12 #include "base/time/time.h" 11 #include "base/time/time.h"
13 #include "google_apis/gcm/base/gcm_export.h" 12 #include "google_apis/gcm/base/gcm_export.h"
14 #include "google_apis/gcm/engine/connection_factory.h" 13 #include "google_apis/gcm/engine/connection_factory.h"
15 #include "google_apis/gcm/engine/mcs_client.h" 14 #include "google_apis/gcm/engine/mcs_client.h"
16 #include "google_apis/gcm/engine/registration_request.h" 15 #include "google_apis/gcm/engine/registration_request.h"
17 #include "google_apis/gcm/engine/unregistration_request.h" 16 #include "google_apis/gcm/engine/unregistration_request.h"
18 #include "google_apis/gcm/gcm_activity.h"
19 17
20 namespace gcm { 18 namespace gcm {
21 19
22 // Records GCM internal stats and activities for debugging purpose. Recording 20 // Defines the interface to record GCM internal stats and activities for
23 // can be turned on/off by calling SetRecording(...) function. It is turned off 21 // debugging purpose.
24 // by default.
25 // This class is not thread safe. It is meant to be owned by a gcm client
26 // instance.
27 class GCM_EXPORT GCMStatsRecorder { 22 class GCM_EXPORT GCMStatsRecorder {
28 public: 23 public:
29 // Type of a received message 24 // Type of a received message
30 enum ReceivedMessageType { 25 enum ReceivedMessageType {
31 // Data message. 26 // Data message.
32 DATA_MESSAGE, 27 DATA_MESSAGE,
33 // Message that indicates some messages have been deleted on the server. 28 // Message that indicates some messages have been deleted on the server.
34 DELETED_MESSAGES, 29 DELETED_MESSAGES,
35 }; 30 };
36 31
37 // A delegate interface that allows the GCMStatsRecorder instance to interact 32 GCMStatsRecorder() {}
38 // with its container. 33 virtual ~GCMStatsRecorder() {}
39 class Delegate {
40 public:
41 // Called when the GCMStatsRecorder is recording activities and a new
42 // activity has just been recorded.
43 virtual void OnActivityRecorded() = 0;
44 };
45
46 GCMStatsRecorder();
47 virtual ~GCMStatsRecorder();
48
49 // Indicates whether the recorder is currently recording activities or not.
50 bool is_recording() const {
51 return is_recording_;
52 }
53
54 // Turns recording on/off.
55 void SetRecording(bool recording);
56
57 // Set a delegate to receive callback from the recorder.
58 void SetDelegate(Delegate* delegate);
59
60 // Clear all recorded activities.
61 void Clear();
62
63 // All RecordXXXX methods below will record one activity. It will be inserted
64 // to the front of a queue so that entries in the queue had reverse
65 // chronological order.
66 34
67 // Records that a check-in has been initiated. 35 // Records that a check-in has been initiated.
68 void RecordCheckinInitiated(uint64 android_id); 36 virtual void RecordCheckinInitiated(uint64 android_id) = 0;
69 37
70 // Records that a check-in has been delayed due to backoff. 38 // Records that a check-in has been delayed due to backoff.
71 void RecordCheckinDelayedDueToBackoff(int64 delay_msec); 39 virtual void RecordCheckinDelayedDueToBackoff(int64 delay_msec) = 0;
72 40
73 // Records that a check-in request has succeeded. 41 // Records that a check-in request has succeeded.
74 void RecordCheckinSuccess(); 42 virtual void RecordCheckinSuccess() = 0;
75 43
76 // Records that a check-in request has failed. If a retry will be tempted then 44 // Records that a check-in request has failed. If a retry will be tempted then
77 // will_retry should be true. 45 // will_retry should be true.
78 void RecordCheckinFailure(std::string status, bool will_retry); 46 virtual void RecordCheckinFailure(std::string status, bool will_retry) = 0;
79 47
80 // Records that a connection to MCS has been initiated. 48 // Records that a connection to MCS has been initiated.
81 void RecordConnectionInitiated(const std::string& host); 49 virtual void RecordConnectionInitiated(const std::string& host) = 0;
82 50
83 // Records that a connection has been delayed due to backoff. 51 // Records that a connection has been delayed due to backoff.
84 void RecordConnectionDelayedDueToBackoff(int64 delay_msec); 52 virtual void RecordConnectionDelayedDueToBackoff(int64 delay_msec) = 0;
85 53
86 // Records that connection has been successfully established. 54 // Records that connection has been successfully established.
87 void RecordConnectionSuccess(); 55 virtual void RecordConnectionSuccess() = 0;
88 56
89 // Records that connection has failed with a network error code. 57 // Records that connection has failed with a network error code.
90 void RecordConnectionFailure(int network_error); 58 virtual void RecordConnectionFailure(int network_error) = 0;
91 59
92 // Records that connection reset has been signaled. 60 // Records that connection reset has been signaled.
93 void RecordConnectionResetSignaled( 61 virtual void RecordConnectionResetSignaled(
94 ConnectionFactory::ConnectionResetReason reason); 62 ConnectionFactory::ConnectionResetReason reason) = 0;
95 63
96 // Records that a registration request has been sent. This could be initiated 64 // Records that a registration request has been sent. This could be initiated
97 // directly from API, or from retry logic. 65 // directly from API, or from retry logic.
98 void RecordRegistrationSent(const std::string& app_id, 66 virtual void RecordRegistrationSent(const std::string& app_id,
99 const std::string& sender_ids); 67 const std::string& sender_ids) = 0;
100 68
101 // Records that a registration response has been received from server. 69 // Records that a registration response has been received from server.
102 void RecordRegistrationResponse(const std::string& app_id, 70 virtual void RecordRegistrationResponse(
103 const std::vector<std::string>& sender_ids, 71 const std::string& app_id,
104 RegistrationRequest::Status status); 72 const std::vector<std::string>& sender_ids,
73 RegistrationRequest::Status status) = 0;
105 74
106 // Records that a registration retry has been requested. The actual retry 75 // Records that a registration retry has been requested. The actual retry
107 // action may not occur until some time later according to backoff logic. 76 // action may not occur until some time later according to backoff logic.
108 void RecordRegistrationRetryRequested( 77 virtual void RecordRegistrationRetryRequested(
109 const std::string& app_id, 78 const std::string& app_id,
110 const std::vector<std::string>& sender_ids, 79 const std::vector<std::string>& sender_ids,
111 int retries_left); 80 int retries_left) = 0;
112 81
113 // Records that an unregistration request has been sent. This could be 82 // Records that an unregistration request has been sent. This could be
114 // initiated directly from API, or from retry logic. 83 // initiated directly from API, or from retry logic.
115 void RecordUnregistrationSent(const std::string& app_id); 84 virtual void RecordUnregistrationSent(const std::string& app_id) = 0;
116 85
117 // Records that an unregistration response has been received from server. 86 // Records that an unregistration response has been received from server.
118 void RecordUnregistrationResponse(const std::string& app_id, 87 virtual void RecordUnregistrationResponse(
119 UnregistrationRequest::Status status); 88 const std::string& app_id,
89 UnregistrationRequest::Status status) = 0;
120 90
121 // Records that an unregistration retry has been requested and delayed due to 91 // Records that an unregistration retry has been requested and delayed due to
122 // backoff logic. 92 // backoff logic.
123 void RecordUnregistrationRetryDelayed(const std::string& app_id, 93 virtual void RecordUnregistrationRetryDelayed(const std::string& app_id,
124 int64 delay_msec); 94 int64 delay_msec) = 0;
125 95
126 // Records that a data message has been received. If this message is not 96 // Records that a data message has been received. If this message is not
127 // sent to a registered app, to_registered_app shoudl be false. If it 97 // sent to a registered app, to_registered_app shoudl be false. If it
128 // indicates that a message has been dropped on the server, is_message_dropped 98 // indicates that a message has been dropped on the server, is_message_dropped
129 // should be true. 99 // should be true.
130 void RecordDataMessageReceived(const std::string& app_id, 100 virtual void RecordDataMessageReceived(const std::string& app_id,
131 const std::string& from, 101 const std::string& from,
132 int message_byte_size, 102 int message_byte_size,
133 bool to_registered_app, 103 bool to_registered_app,
134 ReceivedMessageType message_type); 104 ReceivedMessageType message_type) = 0;
135 105
136 // Records that an outgoing data message was sent over the wire. 106 // Records that an outgoing data message was sent over the wire.
137 void RecordDataSentToWire(const std::string& app_id, 107 virtual void RecordDataSentToWire(const std::string& app_id,
138 const std::string& receiver_id, 108 const std::string& receiver_id,
139 const std::string& message_id, 109 const std::string& message_id,
140 int queued); 110 int queued) = 0;
141 // Records that the MCS client sent a 'send status' notification to callback. 111 // Records that the MCS client sent a 'send status' notification to callback.
142 void RecordNotifySendStatus(const std::string& app_id, 112 virtual void RecordNotifySendStatus(const std::string& app_id,
143 const std::string& receiver_id, 113 const std::string& receiver_id,
144 const std::string& message_id, 114 const std::string& message_id,
145 MCSClient::MessageSendStatus status, 115 MCSClient::MessageSendStatus status,
146 int byte_size, 116 int byte_size,
147 int ttl); 117 int ttl) = 0;
148 // Records that a 'send error' message was received. 118 // Records that a 'send error' message was received.
149 void RecordIncomingSendError(const std::string& app_id, 119 virtual void RecordIncomingSendError(const std::string& app_id,
150 const std::string& receiver_id, 120 const std::string& receiver_id,
151 const std::string& message_id); 121 const std::string& message_id) = 0;
152
153 // Collect all recorded activities into the struct.
154 void CollectActivities(RecordedActivities* recorder_activities) const;
155
156 const std::deque<CheckinActivity>& checkin_activities() const {
157 return checkin_activities_;
158 }
159 const std::deque<ConnectionActivity>& connection_activities() const {
160 return connection_activities_;
161 }
162 const std::deque<RegistrationActivity>& registration_activities() const {
163 return registration_activities_;
164 }
165 const std::deque<ReceivingActivity>& receiving_activities() const {
166 return receiving_activities_;
167 }
168 const std::deque<SendingActivity>& sending_activities() const {
169 return sending_activities_;
170 }
171
172 protected:
173 // Notify the recorder delegate, if it exists, that an activity has been
174 // recorded.
175 void NotifyActivityRecorded();
176
177 void RecordCheckin(const std::string& event,
178 const std::string& details);
179
180 void RecordConnection(const std::string& event,
181 const std::string& details);
182
183 void RecordRegistration(const std::string& app_id,
184 const std::string& sender_id,
185 const std::string& event,
186 const std::string& details);
187
188 void RecordReceiving(const std::string& app_id,
189 const std::string& from,
190 int message_byte_size,
191 const std::string& event,
192 const std::string& details);
193
194 void RecordSending(const std::string& app_id,
195 const std::string& receiver_id,
196 const std::string& message_id,
197 const std::string& event,
198 const std::string& details);
199
200 bool is_recording_;
201 Delegate* delegate_;
202
203 std::deque<CheckinActivity> checkin_activities_;
204 std::deque<ConnectionActivity> connection_activities_;
205 std::deque<RegistrationActivity> registration_activities_;
206 std::deque<ReceivingActivity> receiving_activities_;
207 std::deque<SendingActivity> sending_activities_;
208
209 DISALLOW_COPY_AND_ASSIGN(GCMStatsRecorder);
210 }; 122 };
211 123
212 } // namespace gcm 124 } // namespace gcm
213 125
214 #endif // GOOGLE_APIS_GCM_GCM_STATS_RECORDER_H_ 126 #endif // GOOGLE_APIS_GCM_MONITORING_GCM_STATS_RECODER_H_
OLDNEW
« no previous file with comments | « google_apis/gcm/monitoring/fake_gcm_stats_recorder.cc ('k') | google_apis/gcm/monitoring/gcm_stats_recorder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698