mmfenh/enhancedmediaclient/Plugins/ProgDLSource/src/ProgDLSource.cpp
branchRCL_3
changeset 41 a36789189b53
parent 40 60e492b28869
equal deleted inserted replaced
40:60e492b28869 41:a36789189b53
   765 The intent to evaluate.
   765 The intent to evaluate.
   766 
   766 
   767   @return An error code indicating if the function call was successful. KErrNone on success, otherwise
   767   @return An error code indicating if the function call was successful. KErrNone on success, otherwise
   768   another of the system-wide error codes.
   768   another of the system-wide error codes.
   769 */
   769 */
   770 TInt CProgDLMultimediaSource::EvaluateIntent(ContentAccess::TIntent aIntent) const
   770 TInt CProgDLMultimediaSource::EvaluateIntent(ContentAccess::TIntent aIntent)
   771     {
   771     {
   772     if (!iFile)
   772     if (!iFile)
   773         {
   773         {
   774         return KErrNotReady;
   774         return KErrNotReady;
   775         }
   775         }
  1112         case EEXECUTING:
  1112         case EEXECUTING:
  1113         case EBUFFERING:
  1113         case EBUFFERING:
  1114             {
  1114             {
  1115             TInt pos = 0;
  1115             TInt pos = 0;
  1116             CancelRequests();
  1116             CancelRequests();
  1117 			// we should not delete the iFile, it causes the CAF to delete the rights if they are expired.
  1117             if (iFile)
  1118 
  1118                 iFile->Seek(ESeekStart,0);
  1119             // Since the requests will not be deleted if it is still inside RunL() (iState is EProcessing), 
  1119             // Since the requests will not be deleted if it is still inside RunL() (iState is EProcessing), 
  1120             // iReadRequestPending should not be initialized to 0 always
  1120             // iReadRequestPending should not be initialized to 0 always
  1121             iReadRequestPending = iRequests.Count();
  1121             iReadRequestPending = iRequests.Count();
  1122             //iDLFileSize = -1;
  1122             //iDLFileSize = -1;
  1123             iSnkBytes=pos;
  1123             iSnkBytes=pos;
  1223             TPckgBuf<TFileName> sizePckg;
  1223             TPckgBuf<TFileName> sizePckg;
  1224             err = aMessage.ReadData1FromClient(sizePckg);
  1224             err = aMessage.ReadData1FromClient(sizePckg);
  1225             if ( err == KErrNone )
  1225             if ( err == KErrNone )
  1226                 {
  1226                 {
  1227                 iFullFileName = sizePckg();
  1227                 iFullFileName = sizePckg();
       
  1228                 if (iFile)
       
  1229                 {
       
  1230                     delete iFile;
       
  1231                     iFile = NULL;
       
  1232                 }
       
  1233                 if (iFileHandle)
       
  1234                     {
       
  1235                     TRAPD(err,iFile = CContentFile::NewL(iHandle, UniqueId(), iCAFParameters->iEnableUI));
       
  1236                     }
       
  1237                 else
       
  1238                     {
       
  1239                     // Open for read-only access
       
  1240                     TRAPD(err,iFile = CContentFile::NewL(iFsSession, iFullFileName, UniqueId(), EFileShareAny, iCAFParameters->iEnableUI));
       
  1241                     }
  1228                 }
  1242                 }
  1229             aMessage.Complete(KErrNone);			            
  1243             aMessage.Complete(KErrNone);			            
  1230             
  1244             
  1231             }   
  1245             }   
  1232             break;
  1246             break;
  1393             RDebug::Print(_L(" Percentage Buffered [%d]"),perBuf);
  1407             RDebug::Print(_L(" Percentage Buffered [%d]"),perBuf);
  1394             perBufPckg() = perBuf;
  1408             perBufPckg() = perBuf;
  1395             aMessage.WriteDataToClient(perBufPckg);
  1409             aMessage.WriteDataToClient(perBufPckg);
  1396             aMessage.Complete(KErrNone);
  1410             aMessage.Complete(KErrNone);
  1397             }
  1411             }
  1398             break;   
  1412             break;
  1399                 
  1413         case ESetFileMoving:
       
  1414             {
       
  1415             if (iFile)
       
  1416                 {
       
  1417                 delete iFile;
       
  1418                 iFile = NULL;
       
  1419                 }
       
  1420             aMessage.Complete(KErrNone);
       
  1421             }
       
  1422             break;    
  1400         default:
  1423         default:
  1401             err = KErrArgument;
  1424             err = KErrArgument;
  1402             break;
  1425             break;
  1403         }
  1426         }
  1404     }        
  1427     }        
  1473             CleanupStack::Pop() ; // request
  1496             CleanupStack::Pop() ; // request
  1474             
  1497             
  1475             request->SetActive();
  1498             request->SetActive();
  1476             
  1499             
  1477             //	iSnkBytes += requestSize;
  1500             //	iSnkBytes += requestSize;
  1478             
  1501             request->Buffer()->SetLastBuffer(EFalse);
  1479             if ((iSnkBytes + request->Buffer()->RequestSize()) >= iDownloadSize && isDownloadComplete)
       
  1480                 {
       
  1481     	              request->Buffer()->SetLastBuffer(ETrue);
       
  1482                       DEBPRN1(_L("CProgDLMultimediaSource::ServiceFillBuffer() LastBuffer$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"));
       
  1483                 }
       
  1484             
       
  1485             iFile->Read(request->BufferDes(), requestSize, request->iStatus);
  1502             iFile->Read(request->BufferDes(), requestSize, request->iStatus);
  1486             
  1503             
  1487             }
  1504             }
  1488         else // if (CMMFBuffer::IsSupportedDataBuffer(buffer->Type()))
  1505         else // if (CMMFBuffer::IsSupportedDataBuffer(buffer->Type()))
  1489             return KErrNotSupported;
  1506             return KErrNotSupported;
  1631         {
  1648         {
  1632         
  1649         
  1633         DEBPRN4(_L("CProgDLMultimediaSource::ReadRequestStatus Buffer[%x] BufferSize[%d] RequestSize[%d]"),aRequest->Buffer(),aRequest->Buffer()->BufferSize(),aRequest->Buffer()->RequestSize());
  1650         DEBPRN4(_L("CProgDLMultimediaSource::ReadRequestStatus Buffer[%x] BufferSize[%d] RequestSize[%d]"),aRequest->Buffer(),aRequest->Buffer()->BufferSize(),aRequest->Buffer()->RequestSize());
  1634         DEBPRN3(_L("CProgDLMultimediaSource::ReadRequestStatus Buffer[%x] LastBuffer[%d]"),aRequest->Buffer(),aRequest->Buffer()->LastBuffer());
  1651         DEBPRN3(_L("CProgDLMultimediaSource::ReadRequestStatus Buffer[%x] LastBuffer[%d]"),aRequest->Buffer(),aRequest->Buffer()->LastBuffer());
  1635         
  1652         
       
  1653         //Moved from CProgDLMultimediaSource::ServiceFillBuffer to handle deadlock situations
       
  1654         if ((iSnkBytes + aRequest->Buffer()->RequestSize()) >= iDownloadSize && isDownloadComplete)
       
  1655             {
       
  1656 	              aRequest->Buffer()->SetLastBuffer(ETrue);
       
  1657                 DEBPRN1(_L("CProgDLMultimediaSource::ReadRequestStatus() LastBuffer$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"));
       
  1658             }
       
  1659 
  1636         TBool lastBuffer = aRequest->Buffer()->LastBuffer();
  1660         TBool lastBuffer = aRequest->Buffer()->LastBuffer();
  1637         
  1661         
  1638         if((aRequest->Buffer()->BufferSize() != aRequest->Buffer()->RequestSize()) && !lastBuffer)
  1662         if((aRequest->Buffer()->BufferSize() != aRequest->Buffer()->RequestSize()) && !lastBuffer)
  1639             {
  1663             {
  1640             if(aRequest->SourceType())
  1664             if(aRequest->SourceType())
  1695 
  1719 
  1696 
  1720 
  1697 TInt CProgDLMultimediaSource::ReOpenCAF()
  1721 TInt CProgDLMultimediaSource::ReOpenCAF()
  1698     {
  1722     {
  1699     TInt status(KErrNone);
  1723     TInt status(KErrNone);
  1700     DEBPRN2(_L("CProgDLMultimediaSource::StateChanged ReOpenCAF[%d]"),iSnkBytes);     
  1724     DEBPRN2(_L("CProgDLMultimediaSource::ReOpenCAF ReOpenCAF[%d]"),iSnkBytes);     
  1701     delete iFile;
  1725     delete iFile;
  1702     iFile = NULL;
  1726     iFile = NULL;
  1703     
  1727     
  1704     if (!iFile)
  1728     if (!iFile)
  1705         {
  1729         {
  1739 			iFileSize = iDLFileSize;		          
  1763 			iFileSize = iDLFileSize;		          
  1740             }
  1764             }
  1741         }												
  1765         }												
  1742 
  1766 
  1743     iReOpenCAF = ETrue;
  1767     iReOpenCAF = ETrue;
  1744     DEBPRN3(_L("CProgDLMultimediaSource::StateChanged Exit status[%d] iFileSize[%d]"),status,iFileSize);     
  1768     DEBPRN3(_L("CProgDLMultimediaSource::ReOpenCAF Exit status[%d] iFileSize[%d]"),status,iFileSize);     
  1745     return status;    
  1769     return status;    
  1746     }
  1770     }
  1747 
  1771 
  1748 void CProgDLMultimediaSource::GetAudioConfiguration()
  1772 void CProgDLMultimediaSource::GetAudioConfiguration()
  1749     {
  1773     {