mmserv/sts/stsserver/src/stsserversession.cpp
changeset 20 b67dd1fc57c5
parent 19 4a629bc82c5e
child 36 73253677b50a
equal deleted inserted replaced
19:4a629bc82c5e 20:b67dd1fc57c5
    27     {
    27     {
    28     }
    28     }
    29 
    29 
    30 CStsServerSession::~CStsServerSession()
    30 CStsServerSession::~CStsServerSession()
    31     {
    31     {
       
    32     CleanUpObservers();
    32     TStsCallBack callBack;
    33     TStsCallBack callBack;
    33     callBack.callBackType = EStsShutdown;
    34     callBack.callBackType = EStsShutdown;
    34     iMsgQueue.SendBlocking(callBack);
    35     iMsgQueue.SendBlocking(callBack);
    35     iServer.DropSession(this);
    36     iServer.DropSession(this);
    36     iMsgQueue.Close();
    37     iMsgQueue.Close();
    68     }
    69     }
    69 
    70 
    70 void CStsServerSession::DoRegisterMsgQueueL(const RMessage2& aMessage)
    71 void CStsServerSession::DoRegisterMsgQueueL(const RMessage2& aMessage)
    71     {
    72     {
    72     TInt result = iMsgQueue.Open(aMessage, 0);
    73     TInt result = iMsgQueue.Open(aMessage, 0);
    73 
    74     if (result == KErrNone)
       
    75         {
       
    76         TThreadId id = RThread().Id();
       
    77         TPckg<TThreadId> idPckg(id);
       
    78         TRAP(result,aMessage.Write(1, idPckg));
       
    79         }
    74     aMessage.Complete(result);
    80     aMessage.Complete(result);
    75     }
    81     }
    76 
    82 
    77 void CStsServerSession::DoPlayToneL(const RMessage2& aMessage)
    83 void CStsServerSession::DoPlayToneL(const RMessage2& aMessage)
    78     {
    84     {
   106     aMessage.Complete(KErrNone);
   112     aMessage.Complete(KErrNone);
   107     iObserverMap.erase(context);
   113     iObserverMap.erase(context);
   108     iSts.StopAlarm(context);
   114     iSts.StopAlarm(context);
   109     }
   115     }
   110 
   116 
       
   117 void CStsServerSession::CleanUpObservers()
       
   118     {
       
   119     while (!iObserverMap.empty())
       
   120         {
       
   121         //TODO: Add trace here
       
   122         unsigned int context = iObserverMap.begin()->first;
       
   123         iObserverMap.erase(context);
       
   124         iSts.StopAlarm(context);
       
   125         }
       
   126     }
       
   127 
   111 void CStsServerSession::PlayAlarmComplete(unsigned int aAlarmContext)
   128 void CStsServerSession::PlayAlarmComplete(unsigned int aAlarmContext)
   112     {
   129     {
   113     //TODO: Trigger play complete callback to RSession
       
   114     TStsCallBack callBack =
   130     TStsCallBack callBack =
   115         {
   131         {
   116         EStsPlayAlarmComplete, iObserverMap[aAlarmContext], aAlarmContext
   132         EStsPlayAlarmComplete, iObserverMap[aAlarmContext], aAlarmContext
   117         };
   133         };
   118     iMsgQueue.SendBlocking(callBack);
   134     iMsgQueue.SendBlocking(callBack);