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

Unified Diff: remoting/protocol/jingle_messages.cc

Issue 1420273002: Add TransportSession interface to prepare for WebRTC-based transport. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 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 | « remoting/protocol/jingle_messages.h ('k') | remoting/protocol/jingle_messages_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/protocol/jingle_messages.cc
diff --git a/remoting/protocol/jingle_messages.cc b/remoting/protocol/jingle_messages.cc
index 9896b2758e828d7871e18283cfa3de5a088685d8..bc248e9a8485cd962e12d2d9c1a2c5c37271d19f 100644
--- a/remoting/protocol/jingle_messages.cc
+++ b/remoting/protocol/jingle_messages.cc
@@ -48,7 +48,7 @@ const NameMapElement<JingleMessage::Reason> kReasons[] = {
};
bool ParseIceCredentials(const buzz::XmlElement* element,
- JingleMessage::IceCredentials* credentials) {
+ IceTransportInfo::IceCredentials* credentials) {
DCHECK(element->Name() == QName(kIceTransportNamespace, "credentials"));
const std::string& channel = element->Attr(QName(kEmptyNamespace, "channel"));
@@ -69,7 +69,7 @@ bool ParseIceCredentials(const buzz::XmlElement* element,
}
bool ParseIceCandidate(const buzz::XmlElement* element,
- JingleMessage::NamedCandidate* candidate) {
+ IceTransportInfo::NamedCandidate* candidate) {
DCHECK(element->Name() == QName(kIceTransportNamespace, "candidate"));
const std::string& name = element->Attr(QName(kEmptyNamespace, "name"));
@@ -108,39 +108,8 @@ bool ParseIceCandidate(const buzz::XmlElement* element,
return true;
}
-bool ParseIceTransportInfo(
- const buzz::XmlElement* element,
- std::list<JingleMessage::IceCredentials>* ice_credentials,
- std::list<JingleMessage::NamedCandidate>* candidates) {
- DCHECK(element->Name() == QName(kIceTransportNamespace, "transport"));
-
- ice_credentials->clear();
- candidates->clear();
-
- QName qn_credentials(kIceTransportNamespace, "credentials");
- for (const XmlElement* credentials_tag = element->FirstNamed(qn_credentials);
- credentials_tag;
- credentials_tag = credentials_tag->NextNamed(qn_credentials)) {
- JingleMessage::IceCredentials credentials;
- if (!ParseIceCredentials(credentials_tag, &credentials))
- return false;
- ice_credentials->push_back(credentials);
- }
-
- QName qn_candidate(kIceTransportNamespace, "candidate");
- for (const XmlElement* candidate_tag = element->FirstNamed(qn_candidate);
- candidate_tag; candidate_tag = candidate_tag->NextNamed(qn_candidate)) {
- JingleMessage::NamedCandidate candidate;
- if (!ParseIceCandidate(candidate_tag, &candidate))
- return false;
- candidates->push_back(candidate);
- }
-
- return true;
-}
-
XmlElement* FormatIceCredentials(
- const JingleMessage::IceCredentials& credentials) {
+ const IceTransportInfo::IceCredentials& credentials) {
XmlElement* result =
new XmlElement(QName(kIceTransportNamespace, "credentials"));
result->SetAttr(QName(kEmptyNamespace, "channel"), credentials.channel);
@@ -149,7 +118,8 @@ XmlElement* FormatIceCredentials(
return result;
}
-XmlElement* FormatIceCandidate(const JingleMessage::NamedCandidate& candidate) {
+XmlElement* FormatIceCandidate(
+ const IceTransportInfo::NamedCandidate& candidate) {
XmlElement* result =
new XmlElement(QName(kIceTransportNamespace, "candidate"));
result->SetAttr(QName(kEmptyNamespace, "name"), candidate.name);
@@ -171,14 +141,14 @@ XmlElement* FormatIceCandidate(const JingleMessage::NamedCandidate& candidate) {
} // namespace
-JingleMessage::NamedCandidate::NamedCandidate(
+IceTransportInfo::NamedCandidate::NamedCandidate(
const std::string& name,
const cricket::Candidate& candidate)
: name(name),
candidate(candidate) {
}
-JingleMessage::IceCredentials::IceCredentials(std::string channel,
+IceTransportInfo::IceCredentials::IceCredentials(std::string channel,
std::string ufrag,
std::string password)
: channel(channel), ufrag(ufrag), password(password) {
@@ -296,11 +266,7 @@ bool JingleMessage::ParseXml(const buzz::XmlElement* stanza,
const XmlElement* ice_transport_tag = content_tag->FirstNamed(
QName(kIceTransportNamespace, "transport"));
if (ice_transport_tag) {
- if (!ParseIceTransportInfo(ice_transport_tag, &ice_credentials,
- &candidates)) {
- *error = "Failed to parse transport info";
- return false;
- }
+ transport_info.reset(new buzz::XmlElement(*ice_transport_tag));
}
return true;
@@ -358,17 +324,8 @@ scoped_ptr<buzz::XmlElement> JingleMessage::ToXml() const {
if (description.get())
content_tag->AddElement(description->ToXml());
- if (!ice_credentials.empty() || !candidates.empty()) {
- XmlElement* transport_tag =
- new XmlElement(QName(kIceTransportNamespace, "transport"), true);
- content_tag->AddElement(transport_tag);
- for (const IceCredentials& credentials : ice_credentials) {
- transport_tag->AddElement(FormatIceCredentials(credentials));
- }
- for (const NamedCandidate& candidate : candidates) {
- transport_tag->AddElement(FormatIceCandidate(candidate));
- }
- }
+ if (transport_info)
+ content_tag->AddElement(new XmlElement(*transport_info));
}
return root.Pass();
@@ -475,5 +432,50 @@ scoped_ptr<buzz::XmlElement> JingleMessageReply::ToXml(
return iq.Pass();
}
+IceTransportInfo::IceTransportInfo() {}
+IceTransportInfo::~IceTransportInfo() {}
+
+bool IceTransportInfo::ParseXml(
+ const buzz::XmlElement* element) {
+ if (element->Name() != QName(kIceTransportNamespace, "transport"))
+ return false;
+
+ ice_credentials.clear();
+ candidates.clear();
+
+ QName qn_credentials(kIceTransportNamespace, "credentials");
+ for (const XmlElement* credentials_tag = element->FirstNamed(qn_credentials);
+ credentials_tag;
+ credentials_tag = credentials_tag->NextNamed(qn_credentials)) {
+ IceTransportInfo::IceCredentials credentials;
+ if (!ParseIceCredentials(credentials_tag, &credentials))
+ return false;
+ ice_credentials.push_back(credentials);
+ }
+
+ QName qn_candidate(kIceTransportNamespace, "candidate");
+ for (const XmlElement* candidate_tag = element->FirstNamed(qn_candidate);
+ candidate_tag; candidate_tag = candidate_tag->NextNamed(qn_candidate)) {
+ IceTransportInfo::NamedCandidate candidate;
+ if (!ParseIceCandidate(candidate_tag, &candidate))
+ return false;
+ candidates.push_back(candidate);
+ }
+
+ return true;
+}
+
+scoped_ptr<buzz::XmlElement> IceTransportInfo::ToXml() const {
+ scoped_ptr<buzz::XmlElement> result(
+ new XmlElement(QName(kIceTransportNamespace, "transport"), true));
+ for (const IceCredentials& credentials : ice_credentials) {
+ result->AddElement(FormatIceCredentials(credentials));
+ }
+ for (const NamedCandidate& candidate : candidates) {
+ result->AddElement(FormatIceCandidate(candidate));
+ }
+ return result.Pass();
+}
+
} // namespace protocol
} // namespace remoting
« no previous file with comments | « remoting/protocol/jingle_messages.h ('k') | remoting/protocol/jingle_messages_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698