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

Side by Side Diff: chrome/browser/sync/notifier/cache_invalidation_packet_handler.cc

Issue 3054018: Made CacheInvalidationPacketHandler aware of XmppClient state changes. (Closed)
Patch Set: fixed deps Created 10 years, 4 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
« no previous file with comments | « chrome/browser/sync/notifier/cache_invalidation_packet_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 #include "chrome/browser/sync/notifier/cache_invalidation_packet_handler.h" 5 #include "chrome/browser/sync/notifier/cache_invalidation_packet_handler.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 195
196 CacheInvalidationPacketHandler::CacheInvalidationPacketHandler( 196 CacheInvalidationPacketHandler::CacheInvalidationPacketHandler(
197 buzz::XmppClient* xmpp_client, 197 buzz::XmppClient* xmpp_client,
198 invalidation::InvalidationClient* invalidation_client) 198 invalidation::InvalidationClient* invalidation_client)
199 : xmpp_client_(xmpp_client), 199 : xmpp_client_(xmpp_client),
200 invalidation_client_(invalidation_client), 200 invalidation_client_(invalidation_client),
201 seq_(0), 201 seq_(0),
202 sid_(MakeSid()) { 202 sid_(MakeSid()) {
203 CHECK(xmpp_client_); 203 CHECK(xmpp_client_);
204 CHECK(invalidation_client_); 204 CHECK(invalidation_client_);
205 if (xmpp_client_->GetState() != buzz::XmppEngine::STATE_OPEN) {
206 LOG(DFATAL) << "non-open xmpp_client_ passed to "
207 << "CacheInvalidationPacketHandler";
208 return;
209 }
210 xmpp_client_->SignalStateChange.connect(
211 this, &CacheInvalidationPacketHandler::OnClientStateChange);
205 invalidation::NetworkEndpoint* network_endpoint = 212 invalidation::NetworkEndpoint* network_endpoint =
206 invalidation_client_->network_endpoint(); 213 invalidation_client_->network_endpoint();
207 CHECK(network_endpoint); 214 CHECK(network_endpoint);
208 network_endpoint->RegisterOutboundListener( 215 network_endpoint->RegisterOutboundListener(
209 invalidation::NewPermanentCallback( 216 invalidation::NewPermanentCallback(
210 this, 217 this,
211 &CacheInvalidationPacketHandler::HandleOutboundPacket)); 218 &CacheInvalidationPacketHandler::HandleOutboundPacket));
212 // Owned by xmpp_client. 219 // Owned by xmpp_client.
213 CacheInvalidationListenTask* listen_task = 220 CacheInvalidationListenTask* listen_task =
214 new CacheInvalidationListenTask( 221 new CacheInvalidationListenTask(
215 xmpp_client, NewCallback( 222 xmpp_client, NewCallback(
216 this, &CacheInvalidationPacketHandler::HandleInboundPacket)); 223 this, &CacheInvalidationPacketHandler::HandleInboundPacket));
217 listen_task->Start(); 224 listen_task->Start();
218 } 225 }
219 226
220 CacheInvalidationPacketHandler::~CacheInvalidationPacketHandler() { 227 CacheInvalidationPacketHandler::~CacheInvalidationPacketHandler() {
221 invalidation::NetworkEndpoint* network_endpoint = 228 invalidation::NetworkEndpoint* network_endpoint =
222 invalidation_client_->network_endpoint(); 229 invalidation_client_->network_endpoint();
223 CHECK(network_endpoint); 230 CHECK(network_endpoint);
224 network_endpoint->RegisterOutboundListener(NULL); 231 network_endpoint->RegisterOutboundListener(NULL);
225 } 232 }
226 233
227 void CacheInvalidationPacketHandler::HandleOutboundPacket( 234 void CacheInvalidationPacketHandler::HandleOutboundPacket(
228 invalidation::NetworkEndpoint* const& network_endpoint) { 235 invalidation::NetworkEndpoint* const& network_endpoint) {
229 CHECK_EQ(network_endpoint, invalidation_client_->network_endpoint()); 236 CHECK_EQ(network_endpoint, invalidation_client_->network_endpoint());
237 if (!xmpp_client_) {
238 LOG(DFATAL) << "HandleOutboundPacket() called with NULL xmpp_client_";
239 return;
240 }
230 invalidation::string message; 241 invalidation::string message;
231 network_endpoint->TakeOutboundMessage(&message); 242 network_endpoint->TakeOutboundMessage(&message);
232 std::string encoded_message; 243 std::string encoded_message;
233 if (!base::Base64Encode(message, &encoded_message)) { 244 if (!base::Base64Encode(message, &encoded_message)) {
234 LOG(ERROR) << "Could not base64-encode message to send: " 245 LOG(ERROR) << "Could not base64-encode message to send: "
235 << message; 246 << message;
236 return; 247 return;
237 } 248 }
238 // Owned by xmpp_client. 249 // Owned by xmpp_client.
239 CacheInvalidationSendMessageTask* send_message_task = 250 CacheInvalidationSendMessageTask* send_message_task =
(...skipping 11 matching lines...) Expand all
251 invalidation_client_->network_endpoint(); 262 invalidation_client_->network_endpoint();
252 std::string decoded_message; 263 std::string decoded_message;
253 if (!base::Base64Decode(packet, &decoded_message)) { 264 if (!base::Base64Decode(packet, &decoded_message)) {
254 LOG(ERROR) << "Could not base64-decode received message: " 265 LOG(ERROR) << "Could not base64-decode received message: "
255 << packet; 266 << packet;
256 return; 267 return;
257 } 268 }
258 network_endpoint->HandleInboundMessage(decoded_message); 269 network_endpoint->HandleInboundMessage(decoded_message);
259 } 270 }
260 271
272 void CacheInvalidationPacketHandler::OnClientStateChange(
273 buzz::XmppEngine::State state) {
274 switch (state) {
275 case buzz::XmppEngine::STATE_OPEN:
276 LOG(INFO) << "redundant STATE_OPEN message received";
277 break;
278 case buzz::XmppEngine::STATE_CLOSED:
279 LOG(INFO) << "xmpp_client_ closed -- setting to NULL";
280 xmpp_client_->SignalStateChange.disconnect(this);
281 xmpp_client_ = NULL;
282 break;
283 default:
284 LOG(INFO) << "xmpp_client_ state changed to " << state;
285 break;
286 }
287 }
288
261 } // namespace sync_notifier 289 } // namespace sync_notifier
OLDNEW
« no previous file with comments | « chrome/browser/sync/notifier/cache_invalidation_packet_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698