From 135cfe7dd550a28f12fa4fe69e66d029ced8dd50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Fri, 27 Nov 2015 13:49:24 -0500 Subject: [PATCH] call: emit signal on removal The "OVER" event is the point in time from which the daemon won't know about this call ID anymore. There is always exactly one OVER event when a call is removed. Tuleap: #102 Change-Id: Id11b9047b27c33258b731f7843fd7241e4c7c07f --- src/call.cpp | 10 ++++++++++ src/call.h | 2 +- src/dring/call_const.h | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/call.cpp b/src/call.cpp index 177d03899d..364e84229b 100644 --- a/src/call.cpp +++ b/src/call.cpp @@ -56,8 +56,10 @@ Call::~Call() void Call::removeCall() { + auto this_ = shared_from_this(); Manager::instance().callFactory.removeCall(*this); iceTransport_.reset(); + setState(CallState::OVER); } const std::string& @@ -86,6 +88,11 @@ Call::validStateTransition(CallState newState) // Notice to developper: // - list only permitted transition (return true) // - let non permitted ones as default case (return false) + + // always permited + if (newState == CallState::OVER) + return true; + switch (callState_) { case CallState::INACTIVE: switch (newState) { @@ -219,6 +226,9 @@ Call::getStateStr() const return StateEvent::INACTIVE; } + case CallState::OVER: + return StateEvent::OVER; + case CallState::MERROR: default: return StateEvent::FAILURE; diff --git a/src/call.h b/src/call.h index 29c8f005f0..245451174b 100644 --- a/src/call.h +++ b/src/call.h @@ -84,7 +84,7 @@ class Call : public Recordable, public std::enable_shared_from_this<Call> { * \note modify validStateTransition/getStateStr if this enum changes */ enum class CallState : unsigned { - INACTIVE, ACTIVE, HOLD, BUSY, MERROR, COUNT__ + INACTIVE, ACTIVE, HOLD, BUSY, MERROR, OVER, COUNT__ }; virtual ~Call(); diff --git a/src/dring/call_const.h b/src/dring/call_const.h index 67b0290f48..b0fed89a07 100644 --- a/src/dring/call_const.h +++ b/src/dring/call_const.h @@ -36,6 +36,7 @@ constexpr static char FAILURE [] = "FAILURE" ; constexpr static char HOLD [] = "HOLD" ; constexpr static char UNHOLD [] = "UNHOLD" ; constexpr static char INACTIVE [] = "INACTIVE" ; +constexpr static char OVER [] = "OVER" ; } -- GitLab