Chromium Code Reviews| Index: remoting/protocol/jingle_messages.cc |
| diff --git a/remoting/protocol/jingle_messages.cc b/remoting/protocol/jingle_messages.cc |
| index 44cc5518046d13495e343dbb27e4616b05afaa04..f160b622fda50d5e37150af85f14656489cde177 100644 |
| --- a/remoting/protocol/jingle_messages.cc |
| +++ b/remoting/protocol/jingle_messages.cc |
| @@ -29,7 +29,6 @@ const char kXmlNamespace[] = "http://www.w3.org/XML/1998/namespace"; |
| const char kSessionInitiateAction[] = "session-initiate"; |
| const char kSessionAcceptAction[] = "session-accept"; |
| const char kSessionTerminateAction[] = "session-terminate"; |
| -const char kSessionRejectAction[] = "session-return"; |
| const char kTransportInfoAction[] = "transport-info"; |
| const int kPortMin = 1000; |
| @@ -105,7 +104,7 @@ bool JingleMessage::IsJingleMessage(const buzz::XmlElement* stanza) { |
| JingleMessage::JingleMessage() |
| : action(UNKNOWN_ACTION), |
| - termination_reason(kJingleNamespace, "success") { |
| + reason(UNKNOWN_REASON) { |
| } |
| JingleMessage::JingleMessage( |
| @@ -142,8 +141,6 @@ bool JingleMessage::ParseXml(const buzz::XmlElement* stanza, |
| action = SESSION_ACCEPT; |
| } else if (action_str == kSessionTerminateAction) { |
| action = SESSION_TERMINATE; |
| - } else if (action_str == kSessionRejectAction) { |
| - action = SESSION_REJECT; |
| } else if (action_str == kTransportInfoAction) { |
| action = TRANSPORT_INFO; |
| } else { |
| @@ -157,14 +154,25 @@ bool JingleMessage::ParseXml(const buzz::XmlElement* stanza, |
| return false; |
| } |
| - if (action == SESSION_TERMINATE || action == SESSION_REJECT) { |
| - const XmlElement* reason_tag = |
| - jingle_tag->FirstNamed(QName(kJingleNamespace, "reason")); |
| - if (reason_tag && reason_tag->FirstElement()) |
| - termination_reason = reason_tag->FirstElement()->Name(); |
| - return true; |
| + const XmlElement* reason_tag = |
| + jingle_tag->FirstNamed(QName(kJingleNamespace, "reason")); |
| + if (reason_tag && reason_tag->FirstElement()) { |
| + const QName& reason_qname(reason_tag->FirstElement()->Name()); |
| + if (reason_qname == QName(kJingleNamespace, "success")) { |
| + reason = SUCCESS; |
| + } else if (reason_qname == QName(kJingleNamespace, "decline")) { |
| + reason = DECLINED; |
| + } else if (reason_qname == |
| + QName(kJingleNamespace, "incompatible-parameters")) { |
| + reason = INCOMPATIBLE_PARAMETERS; |
| + } else { |
| + reason = UNKNOWN_REASON; |
| + } |
| } |
| + if (action == SESSION_TERMINATE) |
| + return true; |
| + |
| const XmlElement* content_tag = |
| jingle_tag->FirstNamed(QName(kJingleNamespace, "content")); |
| if (!content_tag) { |
| @@ -241,9 +249,6 @@ buzz::XmlElement* JingleMessage::ToXml() { |
| case SESSION_TERMINATE: |
| action_attr = kSessionTerminateAction; |
| break; |
| - case SESSION_REJECT: |
| - action_attr = kSessionRejectAction; |
| - break; |
| case TRANSPORT_INFO: |
| action_attr = kTransportInfoAction; |
| break; |
| @@ -256,12 +261,29 @@ buzz::XmlElement* JingleMessage::ToXml() { |
| if (action == SESSION_INITIATE) |
| jingle_tag->AddAttr(QName(kEmptyNamespace, "initiator"), from); |
| - if (action == SESSION_TERMINATE || action == SESSION_REJECT) { |
| + if (reason != UNKNOWN_REASON) { |
| XmlElement* reason_tag = new XmlElement(QName(kJingleNamespace, "reason")); |
| jingle_tag->AddElement(reason_tag); |
| + std::string reason_string; |
| + switch (reason) { |
| + case SUCCESS: |
| + reason_string = "success"; |
| + break; |
| + case DECLINED: |
| + reason_string = "decline"; |
| + break; |
| + case INCOMPATIBLE_PARAMETERS: |
| + reason_string = "incompatible-parameters"; |
| + break; |
| + default: |
| + DLOG(FATAL) << "Invalid reason: " << reason; |
| + reason_string = "success"; |
| + } |
|
simonmorris
2011/09/26 23:33:44
Factor out the map from Reason to string, so it do
Sergey Ulanov
2011/09/27 01:09:46
Done. Also refactored ActionType->string mapping.
|
| + reason_tag->AddElement(new XmlElement( |
| + QName(kJingleNamespace, reason_string))); |
| + } |
| - reason_tag->AddElement(new XmlElement(termination_reason)); |
| - } else { |
| + if (action != SESSION_TERMINATE) { |
| XmlElement* content_tag = |
| new XmlElement(QName(kJingleNamespace, "content")); |
| jingle_tag->AddElement(content_tag); |