OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_ENGINE_MCS_CLIENT_H_ | 5 #ifndef GOOGLE_APIS_GCM_ENGINE_MCS_CLIENT_H_ |
6 #define GOOGLE_APIS_GCM_ENGINE_MCS_CLIENT_H_ | 6 #define GOOGLE_APIS_GCM_ENGINE_MCS_CLIENT_H_ |
7 | 7 |
8 #include <deque> | 8 #include <deque> |
9 #include <map> | 9 #include <map> |
10 #include <string> | 10 #include <string> |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/files/file_path.h" | 13 #include "base/files/file_path.h" |
14 #include "base/memory/linked_ptr.h" | 14 #include "base/memory/linked_ptr.h" |
15 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
16 #include "base/timer/timer.h" | |
17 #include "google_apis/gcm/base/gcm_export.h" | 16 #include "google_apis/gcm/base/gcm_export.h" |
18 #include "google_apis/gcm/base/mcs_message.h" | 17 #include "google_apis/gcm/base/mcs_message.h" |
19 #include "google_apis/gcm/engine/connection_handler.h" | 18 #include "google_apis/gcm/engine/connection_handler.h" |
| 19 #include "google_apis/gcm/engine/heartbeat_manager.h" |
20 #include "google_apis/gcm/engine/rmq_store.h" | 20 #include "google_apis/gcm/engine/rmq_store.h" |
21 | 21 |
22 namespace google { | 22 namespace google { |
23 namespace protobuf { | 23 namespace protobuf { |
24 class MessageLite; | 24 class MessageLite; |
25 } // namespace protobuf | 25 } // namespace protobuf |
26 } // namespace google | 26 } // namespace google |
27 | 27 |
28 namespace mcs_proto { | 28 namespace mcs_proto { |
29 class LoginRequest; | 29 class LoginRequest; |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 // in |id_list|. | 145 // in |id_list|. |
146 void HandleSelectiveAck(const PersistentIdList& id_list); | 146 void HandleSelectiveAck(const PersistentIdList& id_list); |
147 // Handle server confirmation of a device message, including device's | 147 // Handle server confirmation of a device message, including device's |
148 // acknowledgment of receipt of messages. | 148 // acknowledgment of receipt of messages. |
149 void HandleServerConfirmedReceipt(StreamId device_stream_id); | 149 void HandleServerConfirmedReceipt(StreamId device_stream_id); |
150 | 150 |
151 // Generates a new persistent id for messages. | 151 // Generates a new persistent id for messages. |
152 // Virtual for testing. | 152 // Virtual for testing. |
153 virtual PersistentId GetNextPersistentId(); | 153 virtual PersistentId GetNextPersistentId(); |
154 | 154 |
| 155 // Helper for the heartbeat manager to signal a connection reset. |
| 156 void OnConnectionResetByHeartbeat(); |
| 157 |
155 // Client state. | 158 // Client state. |
156 State state_; | 159 State state_; |
157 | 160 |
158 // Callbacks for owner. | 161 // Callbacks for owner. |
159 InitializationCompleteCallback initialization_callback_; | 162 InitializationCompleteCallback initialization_callback_; |
160 OnMessageReceivedCallback message_received_callback_; | 163 OnMessageReceivedCallback message_received_callback_; |
161 OnMessageSentCallback message_sent_callback_; | 164 OnMessageSentCallback message_sent_callback_; |
162 | 165 |
163 // The android id and security token in use by this device. | 166 // The android id and security token in use by this device. |
164 uint64 android_id_; | 167 uint64 android_id_; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 std::map<StreamId, PersistentIdList> acked_server_ids_; | 205 std::map<StreamId, PersistentIdList> acked_server_ids_; |
203 | 206 |
204 // Those server messages from a previous connection that were not fully | 207 // Those server messages from a previous connection that were not fully |
205 // acknowledged. They do not have associated stream ids, and will be | 208 // acknowledged. They do not have associated stream ids, and will be |
206 // acknowledged on the next login attempt. | 209 // acknowledged on the next login attempt. |
207 PersistentIdList restored_unackeds_server_ids_; | 210 PersistentIdList restored_unackeds_server_ids_; |
208 | 211 |
209 // The reliable message queue persistent store. Owned by the caller. | 212 // The reliable message queue persistent store. Owned by the caller. |
210 RMQStore* rmq_store_; | 213 RMQStore* rmq_store_; |
211 | 214 |
212 // ----- Heartbeats ----- | 215 // Manager to handle triggering/detecting heartbeats. |
213 // The current heartbeat interval. | 216 HeartbeatManager heartbeat_manager_; |
214 base::TimeDelta heartbeat_interval_; | |
215 // Timer for triggering heartbeats. | |
216 base::Timer heartbeat_timer_; | |
217 | 217 |
218 base::WeakPtrFactory<MCSClient> weak_ptr_factory_; | 218 base::WeakPtrFactory<MCSClient> weak_ptr_factory_; |
219 | 219 |
220 DISALLOW_COPY_AND_ASSIGN(MCSClient); | 220 DISALLOW_COPY_AND_ASSIGN(MCSClient); |
221 }; | 221 }; |
222 | 222 |
223 } // namespace gcm | 223 } // namespace gcm |
224 | 224 |
225 #endif // GOOGLE_APIS_GCM_ENGINE_MCS_CLIENT_H_ | 225 #endif // GOOGLE_APIS_GCM_ENGINE_MCS_CLIENT_H_ |
OLD | NEW |