mmserv/sts/stsserver/src/stsserversession.cpp
changeset 22 128eb6a32b84
parent 16 43d09473c595
child 36 73253677b50a
--- a/mmserv/sts/stsserver/src/stsserversession.cpp	Fri May 14 16:22:35 2010 +0300
+++ b/mmserv/sts/stsserver/src/stsserversession.cpp	Thu May 27 13:20:50 2010 +0300
@@ -29,6 +29,7 @@
 
 CStsServerSession::~CStsServerSession()
     {
+    CleanUpObservers();
     TStsCallBack callBack;
     callBack.callBackType = EStsShutdown;
     iMsgQueue.SendBlocking(callBack);
@@ -70,7 +71,12 @@
 void CStsServerSession::DoRegisterMsgQueueL(const RMessage2& aMessage)
     {
     TInt result = iMsgQueue.Open(aMessage, 0);
-
+    if (result == KErrNone)
+        {
+        TThreadId id = RThread().Id();
+        TPckg<TThreadId> idPckg(id);
+        TRAP(result,aMessage.Write(1, idPckg));
+        }
     aMessage.Complete(result);
     }
 
@@ -108,9 +114,19 @@
     iSts.StopAlarm(context);
     }
 
+void CStsServerSession::CleanUpObservers()
+    {
+    while (!iObserverMap.empty())
+        {
+        //TODO: Add trace here
+        unsigned int context = iObserverMap.begin()->first;
+        iObserverMap.erase(context);
+        iSts.StopAlarm(context);
+        }
+    }
+
 void CStsServerSession::PlayAlarmComplete(unsigned int aAlarmContext)
     {
-    //TODO: Trigger play complete callback to RSession
     TStsCallBack callBack =
         {
         EStsPlayAlarmComplete, iObserverMap[aAlarmContext], aAlarmContext