From 248ad66a92f98bc973ad37cedf190bdfeb490066 Mon Sep 17 00:00:00 2001 From: Tristan Matthews <tristan.matthews@savoirfairelinux.com> Date: Mon, 3 Jun 2013 16:21:50 -0400 Subject: [PATCH] * #23661: daemon: restore getCallList --- daemon/src/Makefile.am | 3 ++- daemon/src/iax/iaxvoiplink.cpp | 11 +++++++++++ daemon/src/iax/iaxvoiplink.h | 5 +++++ daemon/src/managerimpl.cpp | 23 +++++++++-------------- daemon/src/map_utils.h | 1 + daemon/src/sip/sipvoiplink.cpp | 12 ++++++++++++ daemon/src/sip/sipvoiplink.h | 4 ++++ 7 files changed, 44 insertions(+), 15 deletions(-) diff --git a/daemon/src/Makefile.am b/daemon/src/Makefile.am index 3ffa2b7c0f..83e3652fb4 100644 --- a/daemon/src/Makefile.am +++ b/daemon/src/Makefile.am @@ -102,4 +102,5 @@ libsflphone_la_SOURCES = conference.cpp \ sfl_types.h \ array_size.h \ account_schema.h \ - registration_states.h + registration_states.h \ + map_utils.h diff --git a/daemon/src/iax/iaxvoiplink.cpp b/daemon/src/iax/iaxvoiplink.cpp index 5a7ae52acd..6ff8a6e2e7 100644 --- a/daemon/src/iax/iaxvoiplink.cpp +++ b/daemon/src/iax/iaxvoiplink.cpp @@ -44,6 +44,7 @@ #include "audio/samplerateconverter.h" #include "array_size.h" #include "scoped_lock.h" +#include "map_utils.h" AccountMap IAXVoIPLink::iaxAccountMap_; IAXCallMap IAXVoIPLink::iaxCallMap_; @@ -168,6 +169,16 @@ IAXVoIPLink::getEvent() return handlingEvents_; } +std::vector<std::string> +IAXVoIPLink::getCallIDs() +{ + std::vector<std::string> v; + sfl::ScopedLock m(iaxCallMapMutex_); + + map_utils::vectorFromMapKeys(iaxCallMap_, v); + return v; +} + void IAXVoIPLink::sendAudioFromMic() { diff --git a/daemon/src/iax/iaxvoiplink.h b/daemon/src/iax/iaxvoiplink.h index f2a3ed02b4..d6f9ba14d5 100644 --- a/daemon/src/iax/iaxvoiplink.h +++ b/daemon/src/iax/iaxvoiplink.h @@ -72,6 +72,11 @@ class IAXVoIPLink : public VoIPLink { */ virtual bool getEvent(); + + /* Returns a list of all callIDs */ + static std::vector<std::string> + getCallIDs(); + /** * Return the internal account map for all VOIP links */ diff --git a/daemon/src/managerimpl.cpp b/daemon/src/managerimpl.cpp index 0aa4e7ded4..eb11f5659c 100644 --- a/daemon/src/managerimpl.cpp +++ b/daemon/src/managerimpl.cpp @@ -43,6 +43,7 @@ #include "dbus/callmanager.h" #include "global.h" #include "fileutils.h" +#include "map_utils.h" #include "sip/sipvoiplink.h" #include "sip/sipaccount.h" #include "sip/sipcall.h" @@ -2796,20 +2797,14 @@ std::vector<std::map<std::string, std::string> > ManagerImpl::getHistory() return history_.getSerialized(); } -namespace { -template <typename M, typename V> -void vectorFromMapKeys(const M &m, V &v) -{ - for (typename M::const_iterator it = m.begin(); it != m.end(); ++it) - v.push_back(it->first); -} -} - -// FIXME: get call ids from voiplinks -std::vector<std::string> ManagerImpl::getCallList() const +std::vector<std::string> +ManagerImpl::getCallList() const { - std::vector<std::string> v; - // vectorFromMapKeys(callAccountMap_, v); + std::vector<std::string> v(SIPVoIPLink::instance()->getCallIDs()); +#if HAVE_IAX + const std::vector<std::string> iaxCalls(IAXVoIPLink::getCallIDs()); + v.insert(v.end(), iaxCalls.begin(), iaxCalls.end()); +#endif return v; } @@ -2830,7 +2825,7 @@ std::map<std::string, std::string> ManagerImpl::getConferenceDetails( std::vector<std::string> ManagerImpl::getConferenceList() const { std::vector<std::string> v; - vectorFromMapKeys(conferenceMap_, v); + map_utils::vectorFromMapKeys(conferenceMap_, v); return v; } diff --git a/daemon/src/map_utils.h b/daemon/src/map_utils.h index 9cb8bde4f8..eed64396c3 100644 --- a/daemon/src/map_utils.h +++ b/daemon/src/map_utils.h @@ -32,6 +32,7 @@ #define MAP_UTILS_H_ #include <vector> +#include <map> namespace map_utils { template <typename M, typename V> diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp index aa0f2496de..b2da24f374 100644 --- a/daemon/src/sip/sipvoiplink.cpp +++ b/daemon/src/sip/sipvoiplink.cpp @@ -40,6 +40,7 @@ #include "sipvoiplink.h" #include "array_size.h" #include "manager.h" +#include "map_utils.h" #include "logger.h" #include "scoped_lock.h" @@ -1150,6 +1151,17 @@ SIPVoIPLink::clearSipCallMap() sipCallMap_.clear(); } + +std::vector<std::string> +SIPVoIPLink::getCallIDs() +{ + std::vector<std::string> v; + sfl::ScopedLock m(sipCallMapMutex_); + + map_utils::vectorFromMapKeys(sipCallMap_, v); + return v; +} + void SIPVoIPLink::addSipCall(SIPCall* call) { if (!call) diff --git a/daemon/src/sip/sipvoiplink.h b/daemon/src/sip/sipvoiplink.h index 0dbd058d76..b37c05f4c3 100644 --- a/daemon/src/sip/sipvoiplink.h +++ b/daemon/src/sip/sipvoiplink.h @@ -96,6 +96,10 @@ class SIPVoIPLink : public VoIPLink { */ virtual bool getEvent(); + /* Returns a list of all callIDs */ + std::vector<std::string> + getCallIDs(); + /** * Return the internal account map for this VOIP link */ -- GitLab