TizenRefApp-8423 [Call UI] Refactor Call classes to improve stability 11/126611/3
authorIgor Olshevskyi <i.olshevskyi@samsung.com>
Mon, 24 Apr 2017 09:09:45 +0000 (12:09 +0300)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Mon, 24 Apr 2017 11:54:29 +0000 (14:54 +0300)
Change-Id: I1444414323e05d6693b1dadd2359b4b5d82747f1

19 files changed:
inc/model/CallBuilder.h
inc/model/ICall.h
src/main/Instance.cpp
src/model/ActiveCall.cpp
src/model/ActiveCall.h
src/model/Call.cpp
src/model/Call.h
src/model/CallBuilder.cpp
src/model/CallInfo.cpp
src/model/CallManager.cpp
src/model/CallManager.h
src/model/EndCall.cpp
src/model/EndCall.h
src/model/HeldCall.cpp
src/model/HeldCall.h
src/model/IncomingCall.cpp
src/model/IncomingCall.h
src/model/RejectMsg.cpp
src/model/RejectMsg.h

index b603cd1e622e908ac691fc8a3313305473120b20..1ade2348015f524a88e3a168d155dc00c5022c01 100644 (file)
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef CALLUI_MODEL_CALL_BUILDER_H__
-#define CALLUI_MODEL_CALL_BUILDER_H__
+#ifndef __CALLUI_MODEL_CALL_BUILDER_H__
+#define __CALLUI_MODEL_CALL_BUILDER_H__
 
 #include "types.h"
 
@@ -24,13 +24,9 @@ namespace callui {
        class CallBuilder {
        public:
                CallBuilder();
-               CallBuilder &setListener(ICallListenerWRef value);
                ICallSRef build() const;
-
-       private:
-               ICallListenerWRef m_listener;
        };
 
 }
 
-#endif // CALLUI_MODEL_CALL_BUILDER_H__
+#endif // __CALLUI_MODEL_CALL_BUILDER_H__
index 521b197aa2217bb13996a17f6402cdcffd776c13..9cc65056a5b4e62034183d9d67969ee9f9af1a4f 100644 (file)
@@ -25,6 +25,7 @@ namespace callui {
 
        class ICall : public ucl::Polymorphic {
        public:
+               virtual void setListener(const ICallListenerWRef &listener) = 0;
                virtual ucl::Result processAppControl(app_control_h appControl) = 0;
                virtual ISoundManagerSRef getSoundManager() = 0;
                virtual ICallManagerSRef getCallManager() = 0;
index 339120c16c43b05de491f71a8c26da6cefd724e6..d54e7ee4fc9b65ab9b7c355f8b4b120ee2555138 100644 (file)
@@ -148,15 +148,14 @@ namespace callui {
                                CALLBACK_A(Instance::onBack), this);
 
                // For testing
-               static ListenerSRef listener = Listener::newInstance(*this);
-               m_call = CallBuilder().
-                               setListener(listener).
-                               build();
-
+               m_call = CallBuilder().build();
                if (!m_call) {
                        LOG_RETURN(RES_FAIL, "m_call is NULL");
                }
 
+               static ListenerSRef listener = Listener::newInstance(*this);
+               m_call->setListener(listener);
+
                return RES_OK;
        }
 
index 8bbc9a43e6371e2c482cc01b6e45502d2b39739e..b9e0397add64a29a0fb1925b79bc4b92f84c041b 100644 (file)
@@ -28,7 +28,7 @@ namespace callui {
 
        using namespace ucl;
 
-       ActiveCall::ActiveCall(CallManager &cm, cm_call_data_h callData):
+       ActiveCall::ActiveCall(CallManagerWRef cm, cm_call_data_h callData):
                        m_cm(cm),
                        m_isDialing(false)
        {
@@ -38,8 +38,12 @@ namespace callui {
        {
        }
 
-       ActiveCallSRef ActiveCall::newInstance(CallManager &cm, cm_call_data_h callData)
+       ActiveCallSRef ActiveCall::newInstance(CallManagerWRef cm, cm_call_data_h callData)
        {
+               if (!cm) {
+                       LOG_RETURN_VALUE(RES_FAIL, {}, "cm is NULL");
+               }
+
                if (!callData) {
                        LOG_RETURN_VALUE(RES_FAIL, {}, "callData is NULL");
                }
@@ -51,7 +55,7 @@ namespace callui {
 
        Result ActiveCall::prepare(cm_call_data_h callData)
        {
-               m_callInfo = CallInfo::newInstance(*m_cm.getCallClient(), callData);
+               m_callInfo = CallInfo::newInstance(m_cm->getCallClient(), callData);
                if (!m_callInfo) {
                        LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, "CallInfo::newInstance() failed!");
                }
@@ -77,17 +81,26 @@ namespace callui {
 
        Result ActiveCall::hold()
        {
-               return convertCMResult(cm_hold_call(*m_cm.getCallClient()));
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return convertCMResult(cm_hold_call(m_cm->getCallClient()));
        }
 
        Result ActiveCall::end()
        {
-               return m_cm.endCall(0, CallReleaseType::ALL_ACTIVE);
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return m_cm->endCall(0, CallReleaseType::ALL_ACTIVE);
        }
 
        Result ActiveCall::split(const IConferenceCallInfoSCRef &confCallInfo)
        {
-               return m_cm.splitCalls(m_callInfo, confCallInfo);
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return m_cm->splitCalls(m_callInfo, confCallInfo);
        }
 
 }
index d85464c192fca2af4fce231b582ddc2f507b9046..bbdd3f42cf862095f8dcbe5b6ab5b97c9098a5d3 100644 (file)
@@ -27,7 +27,7 @@ namespace callui {
 
        class ActiveCall final : public IActiveCall {
        public:
-               static ActiveCallSRef newInstance(CallManager &cm, cm_call_data_h callData);
+               static ActiveCallSRef newInstance(CallManagerWRef cm, cm_call_data_h callData);
                virtual ~ActiveCall();
 
                // IActiveCall
@@ -40,12 +40,12 @@ namespace callui {
 
        private:
                friend class ucl::RefCountObj<ActiveCall>;
-               ActiveCall(CallManager &cm, cm_call_data_h callData);
+               ActiveCall(CallManagerWRef cm, cm_call_data_h callData);
 
                ucl::Result prepare(cm_call_data_h callData);
 
        private:
-               CallManager &m_cm;
+               CallManagerWRef m_cm;
                CallInfoSRef m_callInfo;
                bool m_isDialing;
        };
index 434920802d1099566e4c355cebb471dfc2b440f8..bfe835ce4d0897496eccb852d47ce1604612fd0f 100644 (file)
@@ -41,9 +41,8 @@ namespace callui {
 
        using namespace ucl;
 
-       Call::Call(RefCountObjBase &rc, ICallListenerWRef listener):
-                       RefCountAware(&rc),
-                       m_listener(listener)
+       Call::Call(RefCountObjBase &rc):
+                       RefCountAware(&rc)
        {
        }
 
@@ -51,6 +50,11 @@ namespace callui {
        {
        }
 
+       void Call::setListener(const ICallListenerWRef &listener)
+       {
+               m_listener = listener;
+       }
+
        Result Call::processAppControl(app_control_h appControl)
        {
                if (!appControl) {
index 0871d0af3a9842941fd9bf876f86945d18cc3347..e4edebb000d3af6623f33621ec68d4ed098e9308 100644 (file)
@@ -38,6 +38,7 @@ namespace callui {
 
                // ICall
 
+               virtual void setListener(const ICallListenerWRef &listener) override final;
                virtual ucl::Result processAppControl(app_control_h appControl) override final;
                virtual ISoundManagerSRef getSoundManager() override final;
                virtual ICallManagerSRef getCallManager() override final;
@@ -51,7 +52,7 @@ namespace callui {
        private:
                friend class CallBuilder;
                friend class ucl::RefCountObj<Call>;
-               Call(ucl::RefCountObjBase &rc, ICallListenerWRef listener);
+               Call(ucl::RefCountObjBase &rc);
 
                ucl::Result prepare();
 
index 6d2b9bfa54f96ce6b01aab917f30c04cb79897dc..5826135c63aa10184e53618b319fd58823af0792 100644 (file)
@@ -24,20 +24,13 @@ namespace callui {
 
        using namespace ucl;
 
-       CallBuilder::CallBuilder():
-                       m_listener(nullptr)
+       CallBuilder::CallBuilder()
        {
        }
 
-       CallBuilder &CallBuilder::setListener(ICallListenerWRef value)
-       {
-               m_listener = value;
-               return *this;
-       }
-
        ICallSRef CallBuilder::build() const
        {
-               auto result = makeShared<Call>(m_listener);
+               auto result = makeShared<Call>();
                FAIL_RETURN_VALUE(result->prepare(), {}, "result->prepare() failed!");
                return result;
        }
index 78b5bad9f713f0374429f363ee2be2833374af6f..333e9337a23cb2a859c4bfc5714ebf368d0738d2 100644 (file)
@@ -34,6 +34,7 @@ namespace callui {
                m_callId(-1),
                m_startTime(0),
                m_isEmergency(false),
+               m_isHDVoice(false),
                m_confMemberCount(0)
        {
        }
index 8835dfadd1040858ccc80f3081cd3e50f84c034e..2ad118c862a3055636b8a2477aec9f4bd2741a1e 100644 (file)
@@ -34,8 +34,10 @@ namespace callui {
 
        using namespace ucl;
 
-       CallManager::CallManager(const CallClientSRef &callClient,
-                       ICallManagerListenerWRef listener):
+       CallManager::CallManager(RefCountObjBase &rc,
+               const CallClientSRef &callClient,
+               ICallManagerListenerWRef listener):
+                       RefCountAware(&rc),
                        m_callClient(callClient),
                        m_listener(listener),
                        m_slot(SimSlot::UNDEFINED),
@@ -86,6 +88,10 @@ namespace callui {
                FAIL_RETURN(updateCall(m_activeCall, active), "updateCall() failed!");
                FAIL_RETURN(updateCall(m_heldCall, held), "updateCall() failed!");
 
+               cm_call_data_free(incom);
+               cm_call_data_free(active);
+               cm_call_data_free(held);
+
                return RES_OK;
        }
 
@@ -95,7 +101,7 @@ namespace callui {
                call.reset();
 
                if (data) {
-                       call = TYPE::newInstance(*this, std::forward<TYPE2>(data));
+                       call = TYPE::newInstance(asWeak(*this), std::forward<TYPE2>(data));
                        if (!call) {
                                LOG_RETURN(RES_FAIL, "newInstance() failed!");
                        }
@@ -103,9 +109,9 @@ namespace callui {
                return RES_OK;
        }
 
-       CallClientSRef CallManager::getCallClient()
+       CallClient &CallManager::getCallClient()
        {
-               return m_callClient;
+               return *m_callClient;
        }
 
        SimSlot CallManager::getSimSlot() const
index 242c607ebb846c19b071c88c80ed95764fa84e19..a2ce29b0306ab96c8606b5dbc7a8ee107b0ee05e 100644 (file)
 
 namespace callui {
 
-       class CallManager final : public ICallManager {
+       class CallManager final :
+               public ucl::RefCountAware,
+               public ICallManager {
        public:
                static CallManagerSRef newInstance(const CallClientSRef &callClient,
                                ICallManagerListenerWRef listener);
                virtual ~CallManager();
 
-               CallClientSRef getCallClient();
+               CallClient &getCallClient();
                SimSlot getSimSlot() const;
                ucl::Result dialVoiceCall(const std::string &number);
                ucl::Result endCall(unsigned int callId, CallReleaseType type);
@@ -52,7 +54,7 @@ namespace callui {
 
        private:
                friend class ucl::RefCountObj<CallManager>;
-               CallManager(const CallClientSRef &callClient,
+               CallManager(ucl::RefCountObjBase &rc, const CallClientSRef &callClient,
                                ICallManagerListenerWRef listener);
 
                ucl::Result prepare();
index 7d5881dcd3b970347e346aee5de4bdca6f05466d..b4ca64f4c525c22f01e558e12ccb589f489cf5d3 100644 (file)
@@ -26,7 +26,7 @@ namespace callui {
 
        using namespace ucl;
 
-       EndCall::EndCall(CallManager &cm, ICallInfoSCRef callInfo):
+       EndCall::EndCall(CallManagerWRef cm, ICallInfoSCRef callInfo):
                        m_cm(cm),
                        m_callInfo(callInfo)
        {
@@ -36,8 +36,12 @@ namespace callui {
        {
        }
 
-       EndCallSRef EndCall::newInstance(CallManager &cm, ICallInfoSCRef callInfo)
+       EndCallSRef EndCall::newInstance(CallManagerWRef cm, ICallInfoSCRef callInfo)
        {
+               if (!cm) {
+                       LOG_RETURN_VALUE(RES_FAIL, {}, "cm is NULL");
+               }
+
                if (!callInfo) {
                        LOG_RETURN_VALUE(RES_FAIL, {}, "callInfo is NULL");
                }
@@ -51,7 +55,10 @@ namespace callui {
 
        Result EndCall::callBack()
        {
-               return m_cm.dialVoiceCall(m_callInfo->getPhoneNumber());
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return m_cm->dialVoiceCall(m_callInfo->getPhoneNumber());
        }
 
        Result EndCall::writeMessage()
index ceff93648383409a662fd96a978c9d804b89a7c6..a89ac5df05836c8bced78a248122c95e7ceaaaff 100644 (file)
@@ -29,7 +29,7 @@ namespace callui {
 
        class EndCall final : public IEndCall {
        public:
-               static EndCallSRef newInstance(CallManager &cm, ICallInfoSCRef callInfo);
+               static EndCallSRef newInstance(CallManagerWRef cm, ICallInfoSCRef callInfo);
 
                virtual ~EndCall();
 
@@ -41,12 +41,12 @@ namespace callui {
 
        private:
                friend class ucl::RefCountObj<EndCall>;
-               EndCall(CallManager &cm, ICallInfoSCRef callInfo);
+               EndCall(CallManagerWRef cm, ICallInfoSCRef callInfo);
 
                ucl::Result prepare();
 
        private:
-               CallManager &m_cm;
+               CallManagerWRef m_cm;
                ICallInfoSCRef m_callInfo;
        };
 
index 8bc5604b5e412ce637a892420ebd27e7af5647fc..89cbc5347a93d4ebf3d1ba0efe147c6ddc0147a1 100644 (file)
@@ -27,7 +27,7 @@ namespace callui {
 
        using namespace ucl;
 
-       HeldCall::HeldCall(CallManager &cm, cm_call_data_h callData):
+       HeldCall::HeldCall(CallManagerWRef cm, cm_call_data_h callData):
                        m_cm(cm)
        {
        }
@@ -36,8 +36,12 @@ namespace callui {
        {
        }
 
-       HeldCallSRef HeldCall::newInstance(CallManager &cm, cm_call_data_h callData)
+       HeldCallSRef HeldCall::newInstance(CallManagerWRef cm, cm_call_data_h callData)
        {
+               if (!cm) {
+                       LOG_RETURN_VALUE(RES_FAIL, {}, "cm is NULL");
+               }
+
                if (!callData) {
                        LOG_RETURN_VALUE(RES_FAIL, {}, "callData is NULL");
                }
@@ -49,7 +53,7 @@ namespace callui {
 
        Result HeldCall::prepare(cm_call_data_h callData)
        {
-               m_callInfo = CallInfo::newInstance(*m_cm.getCallClient(), callData);
+               m_callInfo = CallInfo::newInstance(m_cm->getCallClient(), callData);
                if (!m_callInfo) {
                        LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, "CallInfo::newInstance() failed!");
                }
@@ -63,27 +67,42 @@ namespace callui {
 
        Result HeldCall::unhold()
        {
-               return convertCMResult(cm_unhold_call(*m_cm.getCallClient()));
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return convertCMResult(cm_unhold_call(m_cm->getCallClient()));
        }
 
        Result HeldCall::joinWithActive()
        {
-               return convertCMResult(cm_join_call(*m_cm.getCallClient()));
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return convertCMResult(cm_join_call(m_cm->getCallClient()));
        }
 
        Result HeldCall::swapWithActive()
        {
-               return convertCMResult(cm_swap_call(*m_cm.getCallClient()));
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return convertCMResult(cm_swap_call(m_cm->getCallClient()));
        }
 
        Result HeldCall::end()
        {
-               return m_cm.endCall(0, CallReleaseType::ALL_HOLD);
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return m_cm->endCall(0, CallReleaseType::ALL_HOLD);
        }
 
        Result HeldCall::split(const IConferenceCallInfoSCRef &confCallInfo)
        {
-               return m_cm.splitCalls(m_callInfo, confCallInfo);
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return m_cm->splitCalls(m_callInfo, confCallInfo);
        }
 
 }
index 609c4192235573026f8d47f1625f9683969895ba..b7ed8d7911f4c396c497abe46e5b4eb2d72277ce 100644 (file)
@@ -27,7 +27,7 @@ namespace callui {
 
        class HeldCall final : public IHeldCall {
        public:
-               static HeldCallSRef newInstance(CallManager &cm, cm_call_data_h callData);
+               static HeldCallSRef newInstance(CallManagerWRef cm, cm_call_data_h callData);
                virtual ~HeldCall();
 
                // IHeldCall
@@ -41,12 +41,12 @@ namespace callui {
 
        private:
                friend class ucl::RefCountObj<HeldCall>;
-               HeldCall(CallManager &cm, cm_call_data_h callData);
+               HeldCall(CallManagerWRef cm, cm_call_data_h callData);
 
                ucl::Result prepare(cm_call_data_h callData);
 
        private:
-               CallManager &m_cm;
+               CallManagerWRef m_cm;
                CallInfoSRef m_callInfo;
        };
 
index 0af24bf4dd51d0275984d31ee22c592a3f3b9735..fc51eeac9d0c4053babecb31ed78c8f1b2fea195 100644 (file)
@@ -29,7 +29,7 @@ namespace callui {
 
        using namespace ucl;
 
-       IncomingCall::IncomingCall(CallManager &cm, cm_call_data_h callData):
+       IncomingCall::IncomingCall(CallManagerWRef cm, cm_call_data_h callData):
                        m_cm(cm)
        {
        }
@@ -38,8 +38,12 @@ namespace callui {
        {
        }
 
-       IncomingCallSRef IncomingCall::newInstance(CallManager &cm, cm_call_data_h callData)
+       IncomingCallSRef IncomingCall::newInstance(CallManagerWRef cm, cm_call_data_h callData)
        {
+               if (!cm) {
+                       LOG_RETURN_VALUE(RES_FAIL, {}, "cm is NULL");
+               }
+
                if (!callData) {
                        LOG_RETURN_VALUE(RES_FAIL, {}, "callData is NULL");
                }
@@ -51,7 +55,7 @@ namespace callui {
 
        Result IncomingCall::prepare(cm_call_data_h callData)
        {
-               m_callInfo = CallInfo::newInstance(*m_cm.getCallClient(), callData);
+               m_callInfo = CallInfo::newInstance(m_cm->getCallClient(), callData);
                if (!m_callInfo) {
                        LOG_RETURN_VALUE(RES_FAIL, RES_FAIL, "CallInfo::newInstance() failed!");
                }
@@ -66,17 +70,26 @@ namespace callui {
 
        IRejectMsgProviderSRef IncomingCall::getRejectMsgProvider() const
        {
-               return m_cm.getRejectMsgProvider();
+               if (!m_cm) {
+                       LOG_RETURN_VALUE(RES_FAIL, {}, "Call Manager is NULL");
+               }
+               return m_cm->getRejectMsgProvider();
        }
 
        Result IncomingCall::answer(CallAnswerType type)
        {
-               return convertCMResult(cm_answer_call(*m_cm.getCallClient(), convertCUICallAnswerType(type)));
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return convertCMResult(cm_answer_call(m_cm->getCallClient(), convertCUICallAnswerType(type)));
        }
 
        Result IncomingCall::reject()
        {
-               return convertCMResult(cm_reject_call(*m_cm.getCallClient()));
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return convertCMResult(cm_reject_call(m_cm->getCallClient()));
        }
 
        Result IncomingCall::rejectWithMessage(IRejectMsgSRef message)
@@ -87,13 +100,19 @@ namespace callui {
                if (!msg) {
                        LOG_RETURN(RES_FAIL, "message is not RejectMsg type!");
                }
-               return msg->send(m_callInfo->getPhoneNumber(), m_cm.getSimSlot());
 
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return msg->send(m_callInfo->getPhoneNumber(), m_cm->getSimSlot());
        }
 
        Result IncomingCall::stopAlert()
        {
-               return convertCMResult(cm_stop_alert(*m_cm.getCallClient()));
+               if (!m_cm) {
+                       LOG_RETURN(RES_FAIL, "Call Manager is NULL");
+               }
+               return convertCMResult(cm_stop_alert(m_cm->getCallClient()));
        }
 
 }
index cfa374232438861017cea9ab0d84d8a7c3435b59..cfd02916ec9a166c8c63cd4fb7b22fcefa6721e3 100644 (file)
@@ -27,7 +27,7 @@ namespace callui {
 
        class IncomingCall final : public IIncomingCall {
        public:
-               static IncomingCallSRef newInstance(CallManager &cm, cm_call_data_h callData);
+               static IncomingCallSRef newInstance(CallManagerWRef cm, cm_call_data_h callData);
 
                virtual ~IncomingCall();
 
@@ -42,12 +42,12 @@ namespace callui {
 
        private:
                friend class ucl::RefCountObj<IncomingCall>;
-               IncomingCall(CallManager &cm, cm_call_data_h callData);
+               IncomingCall(CallManagerWRef cm, cm_call_data_h callData);
 
                ucl::Result prepare(cm_call_data_h callData);
 
        private:
-               CallManager &m_cm;
+               CallManagerWRef m_cm;
                CallInfoSRef m_callInfo;
        };
 
index 0a658f70a988e73f5d9073355ecb29930fc8054a..93f79f6adbe15b59d8a77a3ba988f4978e1c3b82 100644 (file)
@@ -27,7 +27,7 @@ namespace callui {
 
        using namespace ucl;
 
-       RejectMsg::RejectMsg(MsgClientSRef client, const TString &string):
+       RejectMsg::RejectMsg(MsgClientWRef client, const TString &string):
                m_msgClient(client),
                m_msg(string)
        {
@@ -37,7 +37,7 @@ namespace callui {
        {
        }
 
-       RejectMsgSRef RejectMsg::newInstance(MsgClientSRef client, const TString &string)
+       RejectMsgSRef RejectMsg::newInstance(MsgClientWRef client, const TString &string)
        {
                return makeShared<RejectMsg>(client, string);
        }
index 9df6e6ef46f3bbe91c08cfbdb34ebeae3ae9496b..e2dbed0772c15ed555d76db352479edaae2a3db2 100644 (file)
@@ -27,7 +27,7 @@ namespace callui {
 
        class RejectMsg : public IRejectMsg {
        public:
-               static RejectMsgSRef newInstance(MsgClientSRef client, const ucl::TString &string);
+               static RejectMsgSRef newInstance(MsgClientWRef client, const ucl::TString &string);
                virtual ~RejectMsg();
 
                ucl::Result send(const std::string &number, SimSlot slot);
@@ -37,7 +37,7 @@ namespace callui {
 
        private:
                friend class ucl::RefCountObj<RejectMsg>;
-               RejectMsg(MsgClientSRef client, const ucl::TString &string);
+               RejectMsg(MsgClientWRef client, const ucl::TString &string);
 
                ucl::Result prepare();