emailservices/emailcommon/src/CFSMailRequestHandler.cpp
changeset 43 99bcbff212ad
parent 20 ecc8def7944a
child 51 d845db10c0d4
equal deleted inserted replaced
42:139d4b7b2938 43:99bcbff212ad
    13 *
    13 *
    14 * Description:  plugin request handler
    14 * Description:  plugin request handler
    15 *
    15 *
    16 */
    16 */
    17 
    17 
       
    18 #include "emailtrace.h"
       
    19 
    18 // <qmail>
    20 // <qmail>
    19 // Exports removed because entire class is exported from DLL
    21 // Exports removed because entire class is exported from DLL
    20 #include <nmcommonheaders.h>
    22 #include <nmcommonheaders.h>
    21 // </qmail>
    23 // </qmail>
    22 
    24 
    23 #include "emailtrace.h"
       
    24 #include "CFSMailRequestHandler.h"
    25 #include "CFSMailRequestHandler.h"
    25 #include "CFSMailRequestObserver.h"
    26 #include "CFSMailRequestObserver.h"
    26 
    27 
    27 
    28 
    28 // ================= MEMBER FUNCTIONS ==========================================    
    29 // ================= MEMBER FUNCTIONS ==========================================    
    29 // -----------------------------------------------------------------------------
    30 // -----------------------------------------------------------------------------
    30 // CFSMailRequestHandler::CFSMailRequestHandler
    31 // CFSMailRequestHandler::CFSMailRequestHandler
    31 // -----------------------------------------------------------------------------
    32 // -----------------------------------------------------------------------------
    32  CFSMailRequestHandler::CFSMailRequestHandler() : iRequestId(0)
    33  CFSMailRequestHandler::CFSMailRequestHandler() : iRequestId(0)
    33 {
    34 {
    34     FUNC_LOG;
    35     NM_FUNCTION;
    35 
    36 
    36     // store pointer to TLS
    37     // store pointer to TLS
    37     TInt err = Dll::SetTls(static_cast<TAny*>(this));
    38     TInt err = Dll::SetTls(static_cast<TAny*>(this));
    38 
    39 
    39     // reset 
    40     // reset 
    46 // -----------------------------------------------------------------------------
    47 // -----------------------------------------------------------------------------
    47 // CFSMailRequestHandler::~CFSMailRequestHandler
    48 // CFSMailRequestHandler::~CFSMailRequestHandler
    48 // -----------------------------------------------------------------------------
    49 // -----------------------------------------------------------------------------
    49  CFSMailRequestHandler::~CFSMailRequestHandler()
    50  CFSMailRequestHandler::~CFSMailRequestHandler()
    50     {
    51     {
    51     FUNC_LOG;
    52     NM_FUNCTION;
       
    53     
    52     TRAP_IGNORE( CancelAllRequestsL() );
    54     TRAP_IGNORE( CancelAllRequestsL() );
    53     RemoveAllRequests();
    55     RemoveAllRequests();
    54     iPendingRequests.Reset();
    56     iPendingRequests.Reset();
    55     iPluginList.ResetAndDestroy();
    57     iPluginList.ResetAndDestroy();
    56     
    58     
    70 // -----------------------------------------------------------------------------
    72 // -----------------------------------------------------------------------------
    71  CFSMailRequestHandler* CFSMailRequestHandler::NewLC( 
    73  CFSMailRequestHandler* CFSMailRequestHandler::NewLC( 
    72                                     RPointerArray<CImplementationInformation>& aPluginInfo,
    74                                     RPointerArray<CImplementationInformation>& aPluginInfo,
    73                                     RPointerArray<CFSMailPlugin>& aPlugins )
    75                                     RPointerArray<CFSMailPlugin>& aPlugins )
    74 {
    76 {
    75     FUNC_LOG;
    77     NM_FUNCTION;
    76   CFSMailRequestHandler* pluginHandler = new (ELeave) CFSMailRequestHandler();
    78     
    77   CleanupStack:: PushL(pluginHandler);
    79     CFSMailRequestHandler* pluginHandler = new (ELeave) CFSMailRequestHandler();
    78   pluginHandler->ConstructL( aPluginInfo, aPlugins );
    80     CleanupStack:: PushL(pluginHandler);
    79   return pluginHandler;
    81     pluginHandler->ConstructL( aPluginInfo, aPlugins );
       
    82     return pluginHandler;
    80 } 
    83 } 
    81 
    84 
    82 // -----------------------------------------------------------------------------
    85 // -----------------------------------------------------------------------------
    83 // CFSMailRequestHandler::NewL
    86 // CFSMailRequestHandler::NewL
    84 // -----------------------------------------------------------------------------
    87 // -----------------------------------------------------------------------------
    85  CFSMailRequestHandler* CFSMailRequestHandler::NewL( 
    88  CFSMailRequestHandler* CFSMailRequestHandler::NewL( 
    86                                     RPointerArray<CImplementationInformation>& aPluginInfo,
    89                                     RPointerArray<CImplementationInformation>& aPluginInfo,
    87                                     RPointerArray<CFSMailPlugin>& aPlugins )
    90                                     RPointerArray<CFSMailPlugin>& aPlugins )
    88 {
    91 {
    89     FUNC_LOG;
    92     NM_FUNCTION;
    90   CFSMailRequestHandler* pluginHandler =  
    93     
    91                 CFSMailRequestHandler::NewLC( aPluginInfo, aPlugins );
    94     CFSMailRequestHandler* pluginHandler =  
    92   CleanupStack:: Pop(pluginHandler);
    95         CFSMailRequestHandler::NewLC( aPluginInfo, aPlugins );
    93   return pluginHandler;
    96     CleanupStack:: Pop(pluginHandler);
       
    97     return pluginHandler;
    94 }
    98 }
    95 
    99 
    96 // -----------------------------------------------------------------------------
   100 // -----------------------------------------------------------------------------
    97 // CFSMailRequestHandler::ConstructL
   101 // CFSMailRequestHandler::ConstructL
    98 // -----------------------------------------------------------------------------
   102 // -----------------------------------------------------------------------------
    99 void CFSMailRequestHandler::ConstructL( 
   103 void CFSMailRequestHandler::ConstructL( 
   100                                 RPointerArray<CImplementationInformation> /*aPluginInfo*/,
   104                                 RPointerArray<CImplementationInformation> /*aPluginInfo*/,
   101                                 RPointerArray<CFSMailPlugin> /*aPlugins*/ )
   105                                 RPointerArray<CFSMailPlugin> /*aPlugins*/ )
   102 {
   106 {
   103     FUNC_LOG;
   107     NM_FUNCTION;
   104 
       
   105 
       
   106 }
   108 }
   107 
   109 
   108 // -----------------------------------------------------------------------------
   110 // -----------------------------------------------------------------------------
   109 // CFSMailRequestHandler::GetPluginByUid
   111 // CFSMailRequestHandler::GetPluginByUid
   110 // -----------------------------------------------------------------------------
   112 // -----------------------------------------------------------------------------
   111  CFSMailPlugin* CFSMailRequestHandler::GetPluginByUid( TFSMailMsgId aObjectId )
   113  CFSMailPlugin* CFSMailRequestHandler::GetPluginByUid( TFSMailMsgId aObjectId )
   112     {
   114     {
   113     FUNC_LOG;
   115     NM_FUNCTION;
   114 
   116 
   115     for(TInt i=0;i<iPluginList.Count();i++)
   117     for(TInt i=0;i<iPluginList.Count();i++)
   116         {
   118         {
   117         if(iPluginList[i]->iPluginId.iUid == aObjectId.PluginId().iUid)
   119         if(iPluginList[i]->iPluginId.iUid == aObjectId.PluginId().iUid)
   118             {
   120             {
   129 // -----------------------------------------------------------------------------
   131 // -----------------------------------------------------------------------------
   130  TFSPendingRequest CFSMailRequestHandler::InitAsyncRequestL( 
   132  TFSPendingRequest CFSMailRequestHandler::InitAsyncRequestL( 
   131                                                     TUid aPluginId,
   133                                                     TUid aPluginId,
   132                                                     MFSMailRequestObserver& aOperationObserver)
   134                                                     MFSMailRequestObserver& aOperationObserver)
   133     {
   135     {
   134     FUNC_LOG;
   136     NM_FUNCTION;
       
   137     
   135         TFSPendingRequest newRequest;
   138         TFSPendingRequest newRequest;
   136         for(TInt i=0;i<iPendingRequests.Count();i++)
   139         for(TInt i=0;i<iPendingRequests.Count();i++)
   137             {
   140             {
   138             if(iPendingRequests[i].iRequestStatus != TFSPendingRequest::EFSRequestPending)
   141             if(iPendingRequests[i].iRequestStatus != TFSPendingRequest::EFSRequestPending)
   139                 {
   142                 {
   159 // -----------------------------------------------------------------------------
   162 // -----------------------------------------------------------------------------
   160 // CFSMailRequestHandler::CompleteRequest
   163 // CFSMailRequestHandler::CompleteRequest
   161 // -----------------------------------------------------------------------------
   164 // -----------------------------------------------------------------------------
   162  void CFSMailRequestHandler::CompleteRequest( TInt aRequestId )
   165  void CFSMailRequestHandler::CompleteRequest( TInt aRequestId )
   163     {
   166     {
   164     FUNC_LOG;
   167     NM_FUNCTION;
       
   168     
   165         for(TInt i=0;i<iPendingRequests.Count();i++)
   169         for(TInt i=0;i<iPendingRequests.Count();i++)
   166         {
   170         {
   167         if(iPendingRequests[i].iRequestId == aRequestId)
   171         if(iPendingRequests[i].iRequestId == aRequestId)
   168             {
   172             {
   169             iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestComplete;
   173             iPendingRequests[i].iRequestStatus = TFSPendingRequest::EFSRequestComplete;
   176 // -----------------------------------------------------------------------------
   180 // -----------------------------------------------------------------------------
   177 // CFSMailRequestHandler::CancelRequestL
   181 // CFSMailRequestHandler::CancelRequestL
   178 // -----------------------------------------------------------------------------
   182 // -----------------------------------------------------------------------------
   179  void CFSMailRequestHandler::CancelRequestL( TInt aRequestId )
   183  void CFSMailRequestHandler::CancelRequestL( TInt aRequestId )
   180     {
   184     {
   181     FUNC_LOG;
   185     NM_FUNCTION;
       
   186     
   182         for(TInt i=0;i<iPendingRequests.Count();i++)
   187         for(TInt i=0;i<iPendingRequests.Count();i++)
   183         {
   188         {
   184         if(iPendingRequests[i].iRequestId == aRequestId &&
   189         if(iPendingRequests[i].iRequestId == aRequestId &&
   185             iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
   190             iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
   186             {
   191             {
   198 // -----------------------------------------------------------------------------
   203 // -----------------------------------------------------------------------------
   199 // CFSMailRequestHandler::CancelAllRequestsL
   204 // CFSMailRequestHandler::CancelAllRequestsL
   200 // -----------------------------------------------------------------------------
   205 // -----------------------------------------------------------------------------
   201  void CFSMailRequestHandler::CancelAllRequestsL( )
   206  void CFSMailRequestHandler::CancelAllRequestsL( )
   202     {
   207     {
   203     FUNC_LOG;
   208     NM_FUNCTION;
       
   209     
   204         for(TInt i=0;i<iPendingRequests.Count();i++)
   210         for(TInt i=0;i<iPendingRequests.Count();i++)
   205         {
   211         {
   206             if(iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
   212             if(iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
   207                 {
   213                 {
   208                 TFSMailMsgId pluginId(iPendingRequests[i].iPluginId,0);
   214                 TFSMailMsgId pluginId(iPendingRequests[i].iPluginId,0);
   218 // -----------------------------------------------------------------------------
   224 // -----------------------------------------------------------------------------
   219 // CFSMailRequestHandler::AddPluginL
   225 // CFSMailRequestHandler::AddPluginL
   220 // -----------------------------------------------------------------------------
   226 // -----------------------------------------------------------------------------
   221  void CFSMailRequestHandler::AddPluginL( TUid aPluginId, CFSMailPlugin* aPlugin )
   227  void CFSMailRequestHandler::AddPluginL( TUid aPluginId, CFSMailPlugin* aPlugin )
   222     {
   228     {
   223     FUNC_LOG;
   229     NM_FUNCTION;
   224 
   230 
   225     CFSMailPluginData* pluginData = new (ELeave) CFSMailPluginData;
   231     CFSMailPluginData* pluginData = new (ELeave) CFSMailPluginData;
   226     pluginData->iPluginId = aPluginId;
   232     pluginData->iPluginId = aPluginId;
   227     pluginData->iPlugin = aPlugin;
   233     pluginData->iPlugin = aPlugin;
   228     iPluginList.Append(pluginData);             
   234     iPluginList.Append(pluginData);             
   232 // -----------------------------------------------------------------------------
   238 // -----------------------------------------------------------------------------
   233 // CFSMailRequestHandler::RemoveAllRequests
   239 // CFSMailRequestHandler::RemoveAllRequests
   234 // -----------------------------------------------------------------------------
   240 // -----------------------------------------------------------------------------
   235 void CFSMailRequestHandler::RemoveAllRequests()
   241 void CFSMailRequestHandler::RemoveAllRequests()
   236     {
   242     {
   237     FUNC_LOG;
   243     NM_FUNCTION;
       
   244     
   238     for(TInt i=0;i<iPendingRequests.Count();i++)
   245     for(TInt i=0;i<iPendingRequests.Count();i++)
   239         {
   246         {
   240         delete iPendingRequests[i].iObserver;
   247         delete iPendingRequests[i].iObserver;
   241         iPendingRequests[i].iObserver = NULL;
   248         iPendingRequests[i].iObserver = NULL;
   242         }
   249         }
   245 // -----------------------------------------------------------------------------
   252 // -----------------------------------------------------------------------------
   246 // CFSMailRequestHandler::GetTempFileL( )
   253 // CFSMailRequestHandler::GetTempFileL( )
   247 // -----------------------------------------------------------------------------
   254 // -----------------------------------------------------------------------------
   248  RFile CFSMailRequestHandler::GetTempFileL( TFSMailMsgId aContentId, TFileName aFileName )
   255  RFile CFSMailRequestHandler::GetTempFileL( TFSMailMsgId aContentId, TFileName aFileName )
   249 {
   256 {
   250     FUNC_LOG;
   257     NM_FUNCTION;
   251     
   258     
   252     // get temp dir path
   259     // get temp dir path
   253     if(iTempDirName == NULL)
   260     if(iTempDirName == NULL)
   254         {
   261         {
   255         // open file server connection
   262         // open file server connection
   272 // -----------------------------------------------------------------------------
   279 // -----------------------------------------------------------------------------
   273 // CFSMailRequestHandler::CleanTempDirL
   280 // CFSMailRequestHandler::CleanTempDirL
   274 // -----------------------------------------------------------------------------
   281 // -----------------------------------------------------------------------------
   275  void CFSMailRequestHandler::CleanTempDirL( )
   282  void CFSMailRequestHandler::CleanTempDirL( )
   276     {
   283     {
   277     FUNC_LOG;
   284     NM_FUNCTION;
   278     }
   285     }
   279 
   286 
   280 // -----------------------------------------------------------------------------
   287 // -----------------------------------------------------------------------------
   281 // CFSMailRequestHandler::GetTempDirL
   288 // CFSMailRequestHandler::GetTempDirL
   282 // -----------------------------------------------------------------------------
   289 // -----------------------------------------------------------------------------
   283  TDesC& CFSMailRequestHandler::GetTempDirL( )
   290  TDesC& CFSMailRequestHandler::GetTempDirL( )
   284     {
   291     {
   285     FUNC_LOG;
   292     NM_FUNCTION;
       
   293     
   286     return *iTempDirName;
   294     return *iTempDirName;
   287     }
   295     }
   288 
   296