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

Unified Diff: chrome/browser/sync/notifier/listener/listen_task.cc

Issue 194065: Initial commit of sync engine code to browser/sync.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Fixes to gtest include path, reverted syncapi. Created 11 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/notifier/listener/listen_task.cc
===================================================================
--- chrome/browser/sync/notifier/listener/listen_task.cc (revision 0)
+++ chrome/browser/sync/notifier/listener/listen_task.cc (revision 0)
@@ -0,0 +1,72 @@
+// Copyright (c) 2009 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.
+
+#include "chrome/browser/sync/notifier/listener/listen_task.h"
+
+#include "base/logging.h"
+#include "talk/base/task.h"
+#include "talk/xmllite/qname.h"
+#include "talk/xmllite/xmlelement.h"
+#include "talk/xmpp/constants.h"
+#include "talk/xmpp/xmppclient.h"
+#include "talk/xmpp/xmppengine.h"
+
+namespace browser_sync {
+
+ListenTask::ListenTask(Task* parent)
+ : buzz::XmppTask(parent, buzz::XmppEngine::HL_TYPE) {
+}
+
+ListenTask::~ListenTask() {
+}
+
+int ListenTask::ProcessStart() {
+ LOG(INFO) << "P2P: Listener task started.";
+ return STATE_RESPONSE;
+}
+
+int ListenTask::ProcessResponse() {
+ LOG(INFO) << "P2P: Listener response received.";
+ const buzz::XmlElement* stanza = NextStanza();
+ if (stanza == NULL) {
+ return STATE_BLOCKED;
+ }
+ // Acknowledge receipt of the notificaiton to the buzz server.
+ scoped_ptr<buzz::XmlElement> response_stanza(MakeIqResult(stanza));
+ SendStanza(response_stanza.get());
+
+ // Inform listeners that a notification has been received.
+ SignalUpdateAvailable();
+ return STATE_RESPONSE;
+}
+
+bool ListenTask::HandleStanza(const buzz::XmlElement* stanza) {
+ if (IsValidNotification(stanza)) {
+ QueueStanza(stanza);
+ return true;
+ }
+ return false;
+}
+
+bool ListenTask::IsValidNotification(const buzz::XmlElement* stanza) {
+ static const std::string kNSNotifier("google:notifier");
+ static const buzz::QName kQnNotifierGetAll(true, kNSNotifier, "getAll");
+ // An update notificaiton has the following form.
+ // <cli:iq from="{bare_jid}" to="{full_jid}"
+ // id="#" type="set" xmlns:cli="jabber:client">
+ // <not:getAll xmlns:not="google:notifier">
+ // <Timestamp long="#" xmlns=""/>
+ // </not:getAll>
+ // </cli:iq>
+ if (MatchRequestIq(stanza, buzz::STR_SET, kQnNotifierGetAll) &&
+ !stricmp(stanza->Attr(buzz::QN_TO).c_str(),
+ GetClient()->jid().Str().c_str()) &&
+ !stricmp(stanza->Attr(buzz::QN_FROM).c_str(),
+ GetClient()->jid().BareJid().Str().c_str())) {
+ return true;
+ }
+ return false;
+}
+
+} // namespace browser_sync
Property changes on: chrome\browser\sync\notifier\listener\listen_task.cc
___________________________________________________________________
Added: svn:eol-style
+ LF

Powered by Google App Engine
This is Rietveld 408576698