From 3bcf6e3523175c93ebeb151286c941f4fbd695c9 Mon Sep 17 00:00:00 2001 From: Benjamin Reis Date: Fri, 22 Sep 2017 16:45:30 +0200 Subject: [PATCH] add parseResouceLists method to local conference --- src/conference/local-conference.cpp | 20 ++++++++++++++++++++ src/conference/local-conference.h | 2 ++ src/conference/remote-conference.cpp | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/conference/local-conference.cpp b/src/conference/local-conference.cpp index 401022812..fa51cbdc9 100644 --- a/src/conference/local-conference.cpp +++ b/src/conference/local-conference.cpp @@ -18,8 +18,10 @@ #include "local-conference.h" #include "participant-p.h" +#include "xml/resource-lists.h" using namespace std; +using namespace LinphonePrivate::Xsd::ResourceLists; LINPHONE_BEGIN_NAMESPACE @@ -57,4 +59,22 @@ void LocalConference::removeParticipant (const shared_ptr &pa } } +list> LocalConference::parseResourceLists(string xmlBody) { + istringstream data(xmlBody); + unique_ptr rl = LinphonePrivate::Xsd::ResourceLists::parseResourceLists(data, Xsd::XmlSchema::Flags::dont_validate); + list> addresses = list>(); + for(const auto &l : rl->getList()) { + for(const auto &entry : l.getEntry()) { + shared_ptr
addr = make_shared
(Address(entry.getUri())); + // TODO : set display name when possible + /*if(!entry.getDisplayName()->present()) { + addr->setDisplayName(entry.getDisplayName()->get()); + }*/ + addresses.push_back(addr); + } + } + + return addresses; +} + LINPHONE_END_NAMESPACE diff --git a/src/conference/local-conference.h b/src/conference/local-conference.h index eec26e1ef..1d20f9cb8 100644 --- a/src/conference/local-conference.h +++ b/src/conference/local-conference.h @@ -38,6 +38,8 @@ public: std::shared_ptr addParticipant (const Address &addr, const CallSessionParams *params, bool hasMedia) override; void removeParticipant (const std::shared_ptr &participant) override; + std::list> parseResourceLists(std::string xmlBody); + private: L_DISABLE_COPY(LocalConference); diff --git a/src/conference/remote-conference.cpp b/src/conference/remote-conference.cpp index 269ed635e..ade1aa1c4 100644 --- a/src/conference/remote-conference.cpp +++ b/src/conference/remote-conference.cpp @@ -65,7 +65,7 @@ string RemoteConference::getResourceLists(const list> ListType l = ListType(); for(const auto &addr : addresses) { EntryType entry = EntryType(addr->asStringUriOnly()); - if(addr->getDisplayName() != "") { + if(!addr->getDisplayName().empty()) { entry.setDisplayName(DisplayName(addr->getDisplayName())); } l.getEntry().push_back(entry);