10e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org/* 20e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * libjingle 30e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * Copyright 2010, Google Inc. 40e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * 50e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * Redistribution and use in source and binary forms, with or without 60e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * modification, are permitted provided that the following conditions are met: 70e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * 80e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * 1. Redistributions of source code must retain the above copyright notice, 90e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * this list of conditions and the following disclaimer. 100e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * 2. Redistributions in binary form must reproduce the above copyright notice, 110e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * this list of conditions and the following disclaimer in the documentation 120e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * and/or other materials provided with the distribution. 130e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * 3. The name of the author may not be used to endorse or promote products 140e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * derived from this software without specific prior written permission. 150e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * 160e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 170e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 180e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 190e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 200e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 210e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 220e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 230e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 240e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 250e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 260e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org */ 270e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 280e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org#include "talk/p2p/base/sessiondescription.h" 290e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 3013b2d035e2e7f2f18e3a4d3377bc1a09f43a4ff9buildbot@webrtc.org#include "webrtc/libjingle/xmllite/xmlelement.h" 310e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 320e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgnamespace cricket { 330e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 340e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgContentInfo* FindContentInfoByName( 350e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org ContentInfos& contents, const std::string& name) { 360e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (ContentInfos::iterator content = contents.begin(); 370e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content != contents.end(); ++content) { 380e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (content->name == name) { 390e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return &(*content); 400e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 410e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 420e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return NULL; 430e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 440e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 450e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst ContentInfo* FindContentInfoByName( 460e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const ContentInfos& contents, const std::string& name) { 470e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (ContentInfos::const_iterator content = contents.begin(); 480e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content != contents.end(); ++content) { 490e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (content->name == name) { 500e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return &(*content); 510e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 520e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 530e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return NULL; 540e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 550e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 560e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst ContentInfo* FindContentInfoByType( 570e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const ContentInfos& contents, const std::string& type) { 580e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (ContentInfos::const_iterator content = contents.begin(); 590e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content != contents.end(); ++content) { 600e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (content->type == type) { 610e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return &(*content); 620e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 630e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 640e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return NULL; 650e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 660e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 670e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst std::string* ContentGroup::FirstContentName() const { 680e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return (!content_names_.empty()) ? &(*content_names_.begin()) : NULL; 690e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 700e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 710e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgbool ContentGroup::HasContentName(const std::string& content_name) const { 720e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return (std::find(content_names_.begin(), content_names_.end(), 730e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content_name) != content_names_.end()); 740e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 750e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 760e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgvoid ContentGroup::AddContentName(const std::string& content_name) { 770e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (!HasContentName(content_name)) { 780e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content_names_.push_back(content_name); 790e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 800e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 810e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 820e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgbool ContentGroup::RemoveContentName(const std::string& content_name) { 830e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org ContentNames::iterator iter = std::find( 840e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content_names_.begin(), content_names_.end(), content_name); 850e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (iter == content_names_.end()) { 860e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return false; 870e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 880e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content_names_.erase(iter); 890e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return true; 900e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 910e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 920e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgSessionDescription* SessionDescription::Copy() const { 930e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org SessionDescription* copy = new SessionDescription(*this); 940e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org // Copy all ContentDescriptions. 950e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (ContentInfos::iterator content = copy->contents_.begin(); 960e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content != copy->contents().end(); ++content) { 970e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content->description = content->description->Copy(); 980e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 990e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return copy; 1000e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1010e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1020e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst ContentInfo* SessionDescription::GetContentByName( 1030e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& name) const { 1040e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return FindContentInfoByName(contents_, name); 1050e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1060e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1070e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgContentInfo* SessionDescription::GetContentByName( 1080e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& name) { 1090e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return FindContentInfoByName(contents_, name); 1100e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1110e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1120e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst ContentDescription* SessionDescription::GetContentDescriptionByName( 1130e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& name) const { 1140e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const ContentInfo* cinfo = FindContentInfoByName(contents_, name); 1150e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (cinfo == NULL) { 1160e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return NULL; 1170e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1180e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1190e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return cinfo->description; 1200e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1210e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1220e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgContentDescription* SessionDescription::GetContentDescriptionByName( 1230e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& name) { 1240e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org ContentInfo* cinfo = FindContentInfoByName(contents_, name); 1250e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (cinfo == NULL) { 1260e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return NULL; 1270e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1280e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1290e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return cinfo->description; 1300e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1310e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1320e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst ContentInfo* SessionDescription::FirstContentByType( 1330e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& type) const { 1340e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return FindContentInfoByType(contents_, type); 1350e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1360e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1370e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst ContentInfo* SessionDescription::FirstContent() const { 1380e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return (contents_.empty()) ? NULL : &(*contents_.begin()); 1390e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1400e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1410e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgvoid SessionDescription::AddContent(const std::string& name, 1420e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& type, 1430e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org ContentDescription* description) { 1440e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org contents_.push_back(ContentInfo(name, type, description)); 1450e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1460e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1470e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgvoid SessionDescription::AddContent(const std::string& name, 1480e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& type, 1490e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org bool rejected, 1500e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org ContentDescription* description) { 1510e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org contents_.push_back(ContentInfo(name, type, rejected, description)); 1520e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1530e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1540e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgbool SessionDescription::RemoveContentByName(const std::string& name) { 1550e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (ContentInfos::iterator content = contents_.begin(); 1560e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content != contents_.end(); ++content) { 1570e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (content->name == name) { 1580e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org delete content->description; 1590e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org contents_.erase(content); 1600e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return true; 1610e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1620e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1630e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1640e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return false; 1650e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1660e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1670e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgbool SessionDescription::AddTransportInfo(const TransportInfo& transport_info) { 1680e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (GetTransportInfoByName(transport_info.content_name) != NULL) { 1690e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return false; 1700e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1710e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org transport_infos_.push_back(transport_info); 1720e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return true; 1730e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1740e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1750e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgbool SessionDescription::RemoveTransportInfoByName(const std::string& name) { 1760e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (TransportInfos::iterator transport_info = transport_infos_.begin(); 1770e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org transport_info != transport_infos_.end(); ++transport_info) { 1780e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (transport_info->content_name == name) { 1790e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org transport_infos_.erase(transport_info); 1800e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return true; 1810e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1820e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1830e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return false; 1840e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1850e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1860e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst TransportInfo* SessionDescription::GetTransportInfoByName( 1870e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& name) const { 1880e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (TransportInfos::const_iterator iter = transport_infos_.begin(); 1890e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org iter != transport_infos_.end(); ++iter) { 1900e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (iter->content_name == name) { 1910e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return &(*iter); 1920e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1930e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 1940e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return NULL; 1950e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 1960e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 1970e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgTransportInfo* SessionDescription::GetTransportInfoByName( 1980e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& name) { 1990e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (TransportInfos::iterator iter = transport_infos_.begin(); 2000e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org iter != transport_infos_.end(); ++iter) { 2010e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (iter->content_name == name) { 2020e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return &(*iter); 2030e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 2040e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 2050e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return NULL; 2060e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 2070e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 2080e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgvoid SessionDescription::RemoveGroupByName(const std::string& name) { 2090e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (ContentGroups::iterator iter = content_groups_.begin(); 2100e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org iter != content_groups_.end(); ++iter) { 2110e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (iter->semantics() == name) { 2120e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org content_groups_.erase(iter); 2130e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org break; 2140e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 2150e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 2160e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 2170e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 2180e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgbool SessionDescription::HasGroup(const std::string& name) const { 2190e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (ContentGroups::const_iterator iter = content_groups_.begin(); 2200e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org iter != content_groups_.end(); ++iter) { 2210e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (iter->semantics() == name) { 2220e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return true; 2230e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 2240e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 2250e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return false; 2260e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 2270e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 2280e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.orgconst ContentGroup* SessionDescription::GetGroupByName( 2290e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org const std::string& name) const { 2300e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org for (ContentGroups::const_iterator iter = content_groups_.begin(); 2310e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org iter != content_groups_.end(); ++iter) { 2320e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org if (iter->semantics() == name) { 2330e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return &(*iter); 2340e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 2350e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org } 2360e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org return NULL; 2370e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} 2380e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org 2390e118e7129884fbea117e78d6f2068139a414dbhenrike@webrtc.org} // namespace cricket 240