Msrp/MsrpServer/src/CMSRPWriter.cpp
branchMSRP_FrameWork
changeset 58 cdb720e67852
parent 25 505ad3f0ce5c
child 60 7634585a4347
equal deleted inserted replaced
25:505ad3f0ce5c 58:cdb720e67852
   102 // -----------------------------------------------------------------------------
   102 // -----------------------------------------------------------------------------
   103 //
   103 //
   104 void CMSRPWriter::RequestSendL(MMSRPWriterObserver& aMsg)
   104 void CMSRPWriter::RequestSendL(MMSRPWriterObserver& aMsg)
   105     { 
   105     { 
   106     MSRPLOG( "CMSRPWriter::RequestSendL enter" )
   106     MSRPLOG( "CMSRPWriter::RequestSendL enter" )
       
   107     // making sure the msg is not already in queue
       
   108     for ( TInt i = 0; i < iSendQueue.Count(); i++ )
       
   109         {
       
   110         if ( iSendQueue[ i ] == &aMsg )
       
   111             {
       
   112             // already included
       
   113             return;
       
   114             }
       
   115         }
       
   116     
   107     iSendQueue.AppendL(&aMsg);
   117     iSendQueue.AppendL(&aMsg);
   108     if(!IsActive())
   118     if(!IsActive())
   109         {
   119         {
   110         /*avoid invoking send in other active object context*/
   120         /*avoid invoking send in other active object context*/
   111         //SendL
   121         //SendL
   115         }
   125         }
   116     MSRPLOG( "CMSRPWriter::RequestSendL exit" )
   126     MSRPLOG( "CMSRPWriter::RequestSendL exit" )
   117     }
   127     }
   118 
   128 
   119 // -----------------------------------------------------------------------------
   129 // -----------------------------------------------------------------------------
       
   130 // CMSRPWriter::CancelSendingL
       
   131 // -----------------------------------------------------------------------------
       
   132 //
       
   133 void CMSRPWriter::CancelSendingL( const MMSRPWriterObserver* aMsg )
       
   134     {
       
   135     MSRPLOG( "CMSRPWriter::CancelSendingL enter" )
       
   136     if ( iSendQueue.Count() )
       
   137         {
       
   138         if ( iSendQueue[ 0 ] == aMsg )
       
   139             {
       
   140             if( iWriteIssued )
       
   141                 {
       
   142                 MSRPLOG( "CMSRPWriter::CancelSendingL Write Canceled" )
       
   143                 iSocket.CancelWrite();      
       
   144                 }
       
   145             }
       
   146         }
       
   147     }   
       
   148 
       
   149 // -----------------------------------------------------------------------------
   120 // CMSRPWriter::CancelReceiving
   150 // CMSRPWriter::CancelReceiving
   121 // -----------------------------------------------------------------------------
   151 // -----------------------------------------------------------------------------
   122 //
   152 //
   123 /*void CMSRPWriter::CancelReceiving()
   153 /*void CMSRPWriter::CancelReceiving()
   124     {
   154     {
   147         {
   177         {
   148         iWriteIssued = FALSE;
   178         iWriteIssued = FALSE;
   149         MMSRPWriterObserver::TMsgStatus msgState = MMSRPWriterObserver::EComplete;
   179         MMSRPWriterObserver::TMsgStatus msgState = MMSRPWriterObserver::EComplete;
   150         msgState = iSendQueue[0]->WriteDoneL(status); 
   180         msgState = iSendQueue[0]->WriteDoneL(status); 
   151         
   181         
   152         if(msgState != MMSRPWriterObserver::EPending)
   182         if( msgState != MMSRPWriterObserver::EPending && 
       
   183                 msgState != MMSRPWriterObserver::ESendingReport )    
   153             {
   184             {
   154             MMSRPWriterObserver* obs = iSendQueue[0];
   185             MMSRPWriterObserver* obs = iSendQueue[0];
   155             iSendQueue.Remove(0);
   186             iSendQueue.Remove(0);
   156             if(msgState == MMSRPWriterObserver::EInterrupted)
   187             if(msgState == MMSRPWriterObserver::EInterrupted)
   157                 iSendQueue.AppendL(obs);              
   188                 iSendQueue.AppendL(obs);              
   184 //
   215 //
   185 void CMSRPWriter::SendL()
   216 void CMSRPWriter::SendL()
   186     {
   217     {
   187     TBool interruptSend = FALSE;
   218     TBool interruptSend = FALSE;
   188 
   219 
   189     //while(iSendQueue.Count())
       
   190     if(iSendQueue.Count())        
   220     if(iSendQueue.Count())        
   191         {
   221         {
   192         MMSRPWriterObserver::TWriteStatus ret = MMSRPWriterObserver::EMsrpSocketWrite;
   222         MMSRPWriterObserver::TWriteStatus ret = MMSRPWriterObserver::EMsrpSocketWrite;
   193         TPtrC8 data(NULL,0);
       
   194         
   223         
   195         if(iSendQueue.Count()>1)
   224         if(iSendQueue.Count()>1)
   196             interruptSend = TRUE;
   225             interruptSend = TRUE;
   197         
   226         
   198         ret = iSendQueue[0]->GetSendBufferL(data, interruptSend);
   227         const TDesC8& writeBuffer = iSendQueue[0]->GetSendBufferL( ret, interruptSend);
   199         
   228         
   200         Deque();
   229         Deque();
   201         CActiveScheduler::Add(this);
   230         CActiveScheduler::Add(this);
   202         SetActive();
   231         SetActive();
   203 
   232 
   204         if( ret == MMSRPWriterObserver::EMsrpSocketWrite ) //KErrNone == 0
   233         if( ret == MMSRPWriterObserver::EMsrpSocketWrite ) //KErrNone == 0
   205            {
   234            {
   206            iSocket.Write( data, iStatus );
   235            iSocket.Write( writeBuffer, iStatus );
   207            iWriteIssued = TRUE;           
   236            iWriteIssued = TRUE;           
   208            }   
   237            }   
   209         else if (ret == MMSRPWriterObserver::EMsrpAvoidSocketWrite)//EAvoidSocketWrite
   238         else if (ret == MMSRPWriterObserver::EMsrpAvoidSocketWrite)//EAvoidSocketWrite
   210             {
   239             {
   211             TRequestStatus* status = &iStatus;                       
   240             TRequestStatus* status = &iStatus;