harvester/client/src/harvesterrequestactive.cpp
changeset 52 40db28bb26b8
parent 45 a93990e5815e
equal deleted inserted replaced
45:a93990e5815e 52:40db28bb26b8
    17 
    17 
    18 #include <e32base.h>
    18 #include <e32base.h>
    19 
    19 
    20 #include "harvesterrequestactive.h"
    20 #include "harvesterrequestactive.h"
    21 #include "harvesterrequestqueue.h"
    21 #include "harvesterrequestqueue.h"
    22 #include "harvesterlog.h"
       
    23 
    22 
    24 // ======== MEMBER FUNCTIONS ========
    23 // ======== MEMBER FUNCTIONS ========
    25 
    24 
    26 // ---------------------------------------------------------------------------
    25 // ---------------------------------------------------------------------------
    27 // CHarvesterRequestActive::~CHarvesterRequestActive()
    26 // CHarvesterRequestActive::~CHarvesterRequestActive()
    31 CHarvesterRequestActive::~CHarvesterRequestActive()
    30 CHarvesterRequestActive::~CHarvesterRequestActive()
    32     {
    31     {
    33     if( IsActive() )
    32     if( IsActive() )
    34         {
    33         {
    35         Cancel();
    34         Cancel();
    36         iRequestCompleted = ETrue;
       
    37         }
    35         }
    38     
    36     
       
    37     iRequestCompleted = ETrue;
    39     delete iAlbumIds;
    38     delete iAlbumIds;
    40     iAlbumIds = NULL;
    39     iAlbumIds = NULL;
    41     }
    40     }
    42 
    41 
    43 // ---------------------------------------------------------------------------
    42 // ---------------------------------------------------------------------------
    44 // CHarvesterRequestActive::NewL
    43 // CHarvesterRequestActive::NewL
    45 // Two-phased constructor.
    44 // Two-phased constructor.
    46 // --------------------------------------------------------------------------- 
    45 // --------------------------------------------------------------------------- 
    47 //
    46 //
    48 CHarvesterRequestActive* CHarvesterRequestActive::NewL(
    47 CHarvesterRequestActive* CHarvesterRequestActive::NewL(
    49         RHarvesterClient& aClient,
    48         RHarvesterClient& aClient, MHarvestObserver* aObserver,
    50         TInt aService, const TDesC& aUri, 
    49         TInt aService, const TDesC& aUri, 
    51         HBufC8* aAlbumIds, TBool aAddLocation,
    50         HBufC8* aAlbumIds, TBool aAddLocation,
    52         CHarvesterRequestQueue* aQueue )
    51         CHarvesterRequestQueue* aQueue )
    53     {
    52     {
    54     CHarvesterRequestActive* self = new( ELeave )CHarvesterRequestActive( aClient,
    53     CHarvesterRequestActive* self = new( ELeave )CHarvesterRequestActive( aClient, aObserver,
    55             aService, aUri, aAlbumIds, aAddLocation, aQueue );
    54             aService, aUri, aAlbumIds, aAddLocation, aQueue );
    56     return self;
    55     return self;
    57     }
    56     }
    58 
    57 
    59 // ---------------------------------------------------------------------------
    58 // ---------------------------------------------------------------------------
    60 // CHarvesterRequestActive::CHarvesterRequestActive()
    59 // CHarvesterRequestActive::CHarvesterRequestActive()
    61 // C++ default constructor can NOT contain any code, that might leave.
    60 // C++ default constructor can NOT contain any code, that might leave.
    62 // ---------------------------------------------------------------------------
    61 // ---------------------------------------------------------------------------
    63 //
    62 //
    64 CHarvesterRequestActive::CHarvesterRequestActive( RHarvesterClient& aClient, 
    63 CHarvesterRequestActive::CHarvesterRequestActive( RHarvesterClient& aClient,
    65     TInt aService, const TDesC& aUri, 
    64     MHarvestObserver* aObserver, TInt aService, const TDesC& aUri, 
    66     HBufC8* aAlbumIds, TBool aAddLocation, CHarvesterRequestQueue* aQueue )
    65     HBufC8* aAlbumIds, TBool aAddLocation, CHarvesterRequestQueue* aQueue )
    67     : CActive( CActive::EPriorityStandard ), iClient( aClient ), 
    66     : CActive( CActive::EPriorityStandard ), iClient( aClient ), iObserver( aObserver ), 
    68     iService( aService ), iUri( aUri ), iAlbumIds( aAlbumIds ), iAddLocation( aAddLocation ),
    67     iService( aService ), iUri( aUri ), iAlbumIds( aAlbumIds ), iAddLocation( aAddLocation ),
    69     iRequestQueue( aQueue ), iLocation( EFalse ), iCancelled( EFalse )
    68     iRequestQueue( aQueue ), iLocation( EFalse ), iCancelled( EFalse )
    70     {
    69     {
    71     CActiveScheduler::Add( this );
    70     CActiveScheduler::Add( this );
    72     }
    71     }
    75 // CHarvesterRequestActive::RunL()
    74 // CHarvesterRequestActive::RunL()
    76 // ---------------------------------------------------------------------------
    75 // ---------------------------------------------------------------------------
    77 //
    76 //
    78 void CHarvesterRequestActive::RunL()
    77 void CHarvesterRequestActive::RunL()
    79     {
    78     {
       
    79     if( iStatus.Int() == KErrCancel )
       
    80         {
       
    81         return;
       
    82         }           
       
    83     
       
    84     if( iStatus.Int() && iObserver )
       
    85         {
       
    86         iObserver->HarvestingComplete( iUri, iStatus.Int() );
       
    87         }       
       
    88     
    80     iRequestCompleted = ETrue;
    89     iRequestCompleted = ETrue;
    81     if( iRequestQueue )
    90     if( iRequestQueue )
    82         {
    91         {
    83         iRequestQueue->RequestComplete();
    92         iRequestQueue->RequestComplete();
    84         }
    93         }
    93     if( aError == KErrCancel )
   102     if( aError == KErrCancel )
    94         {
   103         {
    95         return KErrNone;
   104         return KErrNone;
    96         }
   105         }
    97     
   106     
       
   107     if( iObserver )
       
   108         {
       
   109         iObserver->HarvestingComplete( iUri, aError );
       
   110         }
       
   111     
    98     iRequestCompleted = ETrue;
   112     iRequestCompleted = ETrue;
    99     return KErrNone;
   113     return KErrNone;
   100     }
   114     }
   101 
   115 
   102 // ---------------------------------------------------------------------------
   116 // ---------------------------------------------------------------------------
   104 // ---------------------------------------------------------------------------
   118 // ---------------------------------------------------------------------------
   105 //
   119 //
   106 void CHarvesterRequestActive::DoCancel()
   120 void CHarvesterRequestActive::DoCancel()
   107     {
   121     {
   108     iCancelled = ETrue;
   122     iCancelled = ETrue;
       
   123 	iObserver = NULL;
   109     }
   124     }
   110 
   125 
   111 // ---------------------------------------------------------------------------
   126 // ---------------------------------------------------------------------------
   112 // CHarvesterRequestActive::Start()
   127 // CHarvesterRequestActive::Start()
   113 // ---------------------------------------------------------------------------
   128 // ---------------------------------------------------------------------------
   120     TIpcArgs ipcArgs( &iUri, iAlbumIds, &iLocation );
   135     TIpcArgs ipcArgs( &iUri, iAlbumIds, &iLocation );
   121     iPersistentArgs = ipcArgs;
   136     iPersistentArgs = ipcArgs;
   122     
   137     
   123     if( !iCancelled )
   138     if( !iCancelled )
   124         {
   139         {
   125         iClient.HarvestFile( iService, iPersistentArgs, iStatus, iUri );
   140         iClient.HarvestFile( iService, iPersistentArgs, iStatus );
   126         SetActive();
   141         SetActive();
   127         }
   142         }
   128     }
   143     }
   129 
   144 
   130 // ---------------------------------------------------------------------------
   145 // ---------------------------------------------------------------------------
   131 // CHarvesterRequestActive::ForceHarvest()
   146 // CHarvesterRequestActive::ForceHarvest()
   132 // ---------------------------------------------------------------------------
   147 // ---------------------------------------------------------------------------
   133 //
   148 //
   134 void CHarvesterRequestActive::ForceHarvest()
   149 void CHarvesterRequestActive::ForceHarvest()
   135     {
   150     {
   136     WRITELOG( "CHarvesterRequestActive::ForceHarvest()");
   151     iObserver = NULL;
   137     
   152     
   138     TPckg<TBool> location( iAddLocation );
   153     TPckg<TBool> location( iAddLocation );
   139     iLocation.Set( location );
   154     iLocation.Set( location );
   140     
   155     
   141     TIpcArgs ipcArgs( &iUri, iAlbumIds, &iLocation );
   156     TIpcArgs ipcArgs( &iUri, iAlbumIds, &iLocation );