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

Unified Diff: webrtc/libjingle/xmpp/pubsub_task.cc

Issue 2617443003: Remove webrtc/libjingle/{xmllite,xmpp} (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « webrtc/libjingle/xmpp/pubsub_task.h ('k') | webrtc/libjingle/xmpp/pubsubclient.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/libjingle/xmpp/pubsub_task.cc
diff --git a/webrtc/libjingle/xmpp/pubsub_task.cc b/webrtc/libjingle/xmpp/pubsub_task.cc
deleted file mode 100644
index 812cb95832cfef34d3116c2381511031e8532969..0000000000000000000000000000000000000000
--- a/webrtc/libjingle/xmpp/pubsub_task.cc
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright 2004 The WebRTC Project Authors. All rights reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "webrtc/libjingle/xmpp/pubsub_task.h"
-
-#include <map>
-#include <memory>
-#include <string>
-
-#include "webrtc/libjingle/xmpp/constants.h"
-#include "webrtc/libjingle/xmpp/xmppengine.h"
-#include "webrtc/base/common.h"
-
-namespace buzz {
-
-PubsubTask::PubsubTask(XmppTaskParentInterface* parent,
- const buzz::Jid& pubsub_node_jid)
- : buzz::XmppTask(parent, buzz::XmppEngine::HL_SENDER),
- pubsub_node_jid_(pubsub_node_jid) {
-}
-
-PubsubTask::~PubsubTask() {
-}
-
-// Checks for pubsub publish events as well as responses to get IQs.
-bool PubsubTask::HandleStanza(const buzz::XmlElement* stanza) {
- const buzz::QName& stanza_name(stanza->Name());
- if (stanza_name == buzz::QN_MESSAGE) {
- if (MatchStanzaFrom(stanza, pubsub_node_jid_)) {
- const buzz::XmlElement* pubsub_event_item =
- stanza->FirstNamed(QN_PUBSUB_EVENT);
- if (pubsub_event_item != NULL) {
- QueueStanza(pubsub_event_item);
- return true;
- }
- }
- } else if (stanza_name == buzz::QN_IQ) {
- if (MatchResponseIq(stanza, pubsub_node_jid_, task_id())) {
- const buzz::XmlElement* pubsub_item = stanza->FirstNamed(QN_PUBSUB);
- if (pubsub_item != NULL) {
- QueueStanza(pubsub_item);
- return true;
- }
- }
- }
- return false;
-}
-
-int PubsubTask::ProcessResponse() {
- const buzz::XmlElement* stanza = NextStanza();
- if (stanza == NULL) {
- return STATE_BLOCKED;
- }
-
- if (stanza->Attr(buzz::QN_TYPE) == buzz::STR_ERROR) {
- OnPubsubError(stanza->FirstNamed(buzz::QN_ERROR));
- return STATE_RESPONSE;
- }
-
- const buzz::QName& stanza_name(stanza->Name());
- if (stanza_name == QN_PUBSUB_EVENT) {
- HandlePubsubEventMessage(stanza);
- } else if (stanza_name == QN_PUBSUB) {
- HandlePubsubIqGetResponse(stanza);
- }
-
- return STATE_RESPONSE;
-}
-
-// Registers a function pointer to be called when the value of the pubsub
-// node changes.
-// Note that this does not actually change the XMPP pubsub
-// subscription. All publish events are always received by everyone in the
-// MUC. This function just controls whether the handle function will get
-// called when the event is received.
-bool PubsubTask::SubscribeToNode(const std::string& pubsub_node,
- NodeHandler handler) {
- subscribed_nodes_[pubsub_node] = handler;
- std::unique_ptr<buzz::XmlElement> get_iq_request(
- MakeIq(buzz::STR_GET, pubsub_node_jid_, task_id()));
- if (!get_iq_request) {
- return false;
- }
- buzz::XmlElement* pubsub_element = new buzz::XmlElement(QN_PUBSUB, true);
- buzz::XmlElement* items_element = new buzz::XmlElement(QN_PUBSUB_ITEMS, true);
-
- items_element->AddAttr(buzz::QN_NODE, pubsub_node);
- pubsub_element->AddElement(items_element);
- get_iq_request->AddElement(pubsub_element);
-
- if (SendStanza(get_iq_request.get()) != buzz::XMPP_RETURN_OK) {
- return false;
- }
-
- return true;
-}
-
-void PubsubTask::UnsubscribeFromNode(const std::string& pubsub_node) {
- subscribed_nodes_.erase(pubsub_node);
-}
-
-void PubsubTask::OnPubsubError(const buzz::XmlElement* error_stanza) {
-}
-
-// Checks for a pubsub event message like the following:
-//
-// <message from="muvc-private-chat-some-id@groupchat.google.com"
-// to="john@site.com/gcomm582B14C9">
-// <event xmlns:"http://jabber.org/protocol/pubsub#event">
-// <items node="node-name">
-// <item id="some-id">
-// <payload/>
-// </item>
-// </items>
-// </event>
-// </message>
-//
-// It also checks for retraction event messages like the following:
-//
-// <message from="muvc-private-chat-some-id@groupchat.google.com"
-// to="john@site.com/gcomm582B14C9">
-// <event xmlns:"http://jabber.org/protocol/pubsub#event">
-// <items node="node-name">
-// <retract id="some-id"/>
-// </items>
-// </event>
-// </message>
-void PubsubTask::HandlePubsubEventMessage(
- const buzz::XmlElement* pubsub_event) {
- ASSERT(pubsub_event->Name() == QN_PUBSUB_EVENT);
- for (const buzz::XmlChild* child = pubsub_event->FirstChild();
- child != NULL;
- child = child->NextChild()) {
- const buzz::XmlElement* child_element = child->AsElement();
- const buzz::QName& child_name(child_element->Name());
- if (child_name == QN_PUBSUB_EVENT_ITEMS) {
- HandlePubsubItems(child_element);
- }
- }
-}
-
-// Checks for a response to an pubsub IQ get like the following:
-//
-// <iq from="muvc-private-chat-some-id@groupchat.google.com"
-// to="john@site.com/gcomm582B14C9"
-// type="result">
-// <pubsub xmlns:"http://jabber.org/protocol/pubsub">
-// <items node="node-name">
-// <item id="some-id">
-// <payload/>
-// </item>
-// </items>
-// </event>
-// </message>
-void PubsubTask::HandlePubsubIqGetResponse(
- const buzz::XmlElement* pubsub_iq_response) {
- ASSERT(pubsub_iq_response->Name() == QN_PUBSUB);
- for (const buzz::XmlChild* child = pubsub_iq_response->FirstChild();
- child != NULL;
- child = child->NextChild()) {
- const buzz::XmlElement* child_element = child->AsElement();
- const buzz::QName& child_name(child_element->Name());
- if (child_name == QN_PUBSUB_ITEMS) {
- HandlePubsubItems(child_element);
- }
- }
-}
-
-// Calls registered handlers in response to pubsub event or response to
-// IQ pubsub get.
-// 'items' is the child of a pubsub#event:event node or pubsub:pubsub node.
-void PubsubTask::HandlePubsubItems(const buzz::XmlElement* items) {
- ASSERT(items->HasAttr(QN_NODE));
- const std::string& node_name(items->Attr(QN_NODE));
- NodeSubscriptions::iterator iter = subscribed_nodes_.find(node_name);
- if (iter != subscribed_nodes_.end()) {
- NodeHandler handler = iter->second;
- const buzz::XmlElement* item = items->FirstElement();
- while (item != NULL) {
- const buzz::QName& item_name(item->Name());
- if (item_name != QN_PUBSUB_EVENT_ITEM &&
- item_name != QN_PUBSUB_EVENT_RETRACT &&
- item_name != QN_PUBSUB_ITEM) {
- continue;
- }
-
- (this->*handler)(item);
- item = item->NextElement();
- }
- return;
- }
-}
-
-}
« no previous file with comments | « webrtc/libjingle/xmpp/pubsub_task.h ('k') | webrtc/libjingle/xmpp/pubsubclient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698